{"id":47,"date":"2008-11-08T15:53:45","date_gmt":"2008-11-08T22:53:45","guid":{"rendered":"http:\/\/www.kevinbeason.com\/worklog\/?p=47"},"modified":"2008-11-08T15:53:45","modified_gmt":"2008-11-08T22:53:45","slug":"smallpt-global-illumination-in-99-lines-of-c","status":"publish","type":"post","link":"https:\/\/www.kevinbeason.com\/worklog\/2008\/11\/08\/smallpt-global-illumination-in-99-lines-of-c\/","title":{"rendered":"smallpt: Global Illumination in 99 lines of C++"},"content":{"rendered":"<p>Finally releasing a little project I&#8217;ve been working on. A <em>small<\/em> project, although I spent an insane amount of time tweaking it. My hope is that it can serve as a concise reference to anyone wondering what&#8217;s involved in a basic global illumination renderer. Honestly, since I don&#8217;t explain the concepts or the shortcuts used, and the code is ugly in some places, I don&#8217;t know how valuable it will be to a someone just entering the field. A basic renderer can be kicked out in less than a day, perhaps a concrete working example like this can fill in any missing details  for someone just starting off.<\/p>\n<p><a href=\"http:\/\/www.kevinbeason.com\/smallpt\/\">smallpt: Global Illumination in 99 lines of C++<\/a><\/p>\n\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 33%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-47 gallery-columns-3 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.kevinbeason.com\/worklog\/2008\/11\/08\/smallpt-global-illumination-in-99-lines-of-c\/result_25k\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.kevinbeason.com\/worklog\/wp-content\/uploads\/2008\/11\/result_25k-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.kevinbeason.com\/worklog\/2008\/11\/08\/smallpt-global-illumination-in-99-lines-of-c\/wada\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.kevinbeason.com\/worklog\/wp-content\/uploads\/2008\/11\/wada-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.kevinbeason.com\/worklog\/2008\/11\/08\/smallpt-global-illumination-in-99-lines-of-c\/forest\/'><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/www.kevinbeason.com\/worklog\/wp-content\/uploads\/2008\/11\/forest-150x150.png\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Finally releasing a little project I&#8217;ve been working on. A small project, although I spent an insane amount of time tweaking it. My hope is that it can serve as a concise reference to anyone wondering what&#8217;s involved in a basic global illumination renderer. Honestly, since I don&#8217;t explain the concepts or the shortcuts used, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-47","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/posts\/47","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/comments?post=47"}],"version-history":[{"count":1,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/posts\/47\/revisions"}],"predecessor-version":[{"id":51,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/posts\/47\/revisions\/51"}],"wp:attachment":[{"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/media?parent=47"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/categories?post=47"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kevinbeason.com\/worklog\/wp-json\/wp\/v2\/tags?post=47"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}