{"id":2350,"date":"2014-01-30T17:53:13","date_gmt":"2014-01-30T17:53:13","guid":{"rendered":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/?post_type=portfolio&#038;p=2350"},"modified":"2023-01-07T21:07:06","modified_gmt":"2023-01-07T20:07:06","slug":"smallpaint","status":"publish","type":"portfolio","link":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/gfx\/smallpaint\/","title":{"rendered":"SmallpaintA global illumination renderer in less than 250 lines of C++ code"},"content":{"rendered":"<div  class='avia-slideshow av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c avia-slideshow-portfolio av_slideshow avia-slide-slider  avia-builder-el-0  el_before_av_heading  avia-builder-el-first  av-slideshow-ui av-slideshow-autoplay av-loop-endless av-loop-manual-endless av-default-height-applied avia-slideshow-1' data-slideshow-options=\"{&quot;animation&quot;:&quot;slide&quot;,&quot;autoplay&quot;:true,&quot;loop_autoplay&quot;:&quot;endless&quot;,&quot;interval&quot;:5,&quot;loop_manual&quot;:&quot;manual-endless&quot;,&quot;autoplay_stopper&quot;:false,&quot;noNavigation&quot;:false,&quot;bg_slider&quot;:false,&quot;keep_padding&quot;:false,&quot;hoverpause&quot;:false,&quot;show_slide_delay&quot;:0}\"  itemprop=\"image\" itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/ImageObject\" ><ul class='avia-slideshow-inner ' style='padding-bottom: 80.808080808081%;'><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__0  slide-1 slide-odd'><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer.jpg\" data-srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer.jpg 900w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-80x80.jpg 80w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-300x300.jpg 300w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-768x768.jpg 768w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-36x36.jpg 36w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-180x180.jpg 180w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-705x705.jpg 705w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-120x120.jpg 120w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-450x450.jpg 450w\" data-sizes=\"(max-width: 900px) 100vw, 900px\"  data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__0 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Bernhard Rainer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-4030 avia-img-lazy-loading-not-4030\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-495x400.jpg\" width=\"495\" height=\"400\" title='Bernhard Rainer' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-495x400.jpg 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Bernhard-Rainer-845x684.jpg 845w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/a><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__1  slide-2 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__1 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Michael Kammer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2691 avia-img-lazy-loading-not-2691\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_kammer-495x400.png\" width=\"495\" height=\"400\" title='michael_kammer' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_kammer-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_kammer-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__2  slide-3 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__2 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Lukas Geyer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-4031 avia-img-lazy-loading-not-4031\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Lukas-Geyer-495x400.jpg\" width=\"495\" height=\"400\" title='Lukas Geyer' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Lukas-Geyer-495x400.jpg 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/Lukas-Geyer-845x684.jpg 845w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__3  slide-4 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__3 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Manuel Kr\u00f6ter<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2690 avia-img-lazy-loading-not-2690\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/manuel_kroeter-495x400.png\" width=\"495\" height=\"400\" title='manuel_kroeter' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/manuel_kroeter-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/manuel_kroeter-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__4  slide-5 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__4 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Silvana Podaras<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2695 avia-img-lazy-loading-not-2695\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/silvana_podaras-495x400.png\" width=\"495\" height=\"400\" title='silvana_podaras' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/silvana_podaras-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/silvana_podaras-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__5  slide-6 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__5 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Christian K\u00f6ssler<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2687 avia-img-lazy-loading-not-2687\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/christian_koessler-495x400.png\" width=\"495\" height=\"400\" title='christian_koessler' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/christian_koessler-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/christian_koessler-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__6  slide-7 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__6 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Michael Probst<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2692 avia-img-lazy-loading-not-2692\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_probst-495x400.png\" width=\"495\" height=\"400\" title='michael_probst' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_probst-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_probst-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__7  slide-8 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__7 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Florian Spechtenhauser<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2688 avia-img-lazy-loading-not-2688\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/florian_spechtenhauser-495x400.png\" width=\"495\" height=\"400\" title='florian_spechtenhauser' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/florian_spechtenhauser-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/florian_spechtenhauser-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__8  slide-9 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__8 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Jean-Baptiste Kaiser<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2689 avia-img-lazy-loading-not-2689\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/jean-baptiste_kaiser-495x400.png\" width=\"495\" height=\"400\" title='jean-baptiste_kaiser' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/jean-baptiste_kaiser-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/jean-baptiste_kaiser-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__9  slide-10 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__9 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Michael Rebec<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2693 avia-img-lazy-loading-not-2693\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_rebec-495x400.png\" width=\"495\" height=\"400\" title='michael_rebec' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_rebec-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/michael_rebec-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__10  slide-11 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__10 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Stefan Doppelbauer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2696 avia-img-lazy-loading-not-2696\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/stefan_doppelbauer-495x400.png\" width=\"495\" height=\"400\" title='stefan_doppelbauer' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/stefan_doppelbauer-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/stefan_doppelbauer-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__11  slide-12 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2326 avia-img-lazy-loading-not-2326\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/smallpaint-495x400.png\" width=\"495\" height=\"400\" title='smallpaint' alt='Smallpaint - A Global Illumination Renderer'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/smallpaint-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/01\/smallpaint-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__12  slide-13 slide-odd'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__12 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Bernhard Langer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2686 avia-img-lazy-loading-not-2686\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/bernhard_langer-495x400.png\" width=\"495\" height=\"400\" title='bernhard_langer' alt='TU Wien Rendering Course'  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/bernhard_langer-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/bernhard_langer-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><li  class='avia-slideshow-slide av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__13  slide-14 slide-even'><div data-rel='slideshow-1' class='avia-slide-wrap '   ><div class='av-slideshow-caption av-1yyhn3i-5f68e5fb33926cf20d4773c8e2a89c4c__13 avia-caption'><div class=\"avia-inner-caption\"><div class='avia-caption-content '  itemprop=\"description\" ><p>Peter Vorlaufer<\/p>\n<\/div><\/div><\/div><img decoding=\"async\" fetchpriority=\"high\" class=\"wp-image-2694 avia-img-lazy-loading-not-2694\"  src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/peter_vorlaufer-495x400.png\" width=\"495\" height=\"400\" title='peter_vorlaufer' alt=''  itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/peter_vorlaufer-495x400.png 495w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/peter_vorlaufer-710x575.png 710w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><\/div><\/li><\/ul><div class='avia-slideshow-arrows avia-slideshow-controls' ><a href='#prev' class='prev-slide  avia-svg-icon avia-font-svg_entypo-fontello' data-av_svg_icon='left-open-big' data-av_iconset='svg_entypo-fontello' tabindex='-1' title=\"Previous\"><svg version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"15\" height=\"32\" viewBox=\"0 0 15 32\" preserveAspectRatio=\"xMidYMid meet\" aria-labelledby='av-svg-title-1' aria-describedby='av-svg-desc-1' role=\"graphics-symbol\" aria-hidden=\"true\">\n<title id='av-svg-title-1'>Previous<\/title>\n<desc id='av-svg-desc-1'>Previous<\/desc>\n<path d=\"M14.464 27.84q0.832 0.832 0 1.536-0.832 0.832-1.536 0l-12.544-12.608q-0.768-0.768 0-1.6l12.544-12.608q0.704-0.832 1.536 0 0.832 0.704 0 1.536l-11.456 11.904z\"><\/path>\n<\/svg><span class='avia_hidden_link_text'>Previous<\/span><\/a><a href='#next' class='next-slide  avia-svg-icon avia-font-svg_entypo-fontello' data-av_svg_icon='right-open-big' data-av_iconset='svg_entypo-fontello' tabindex='-1' title=\"Next\"><svg version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"15\" height=\"32\" viewBox=\"0 0 15 32\" preserveAspectRatio=\"xMidYMid meet\" aria-labelledby='av-svg-title-2' aria-describedby='av-svg-desc-2' role=\"graphics-symbol\" aria-hidden=\"true\">\n<title id='av-svg-title-2'>Next<\/title>\n<desc id='av-svg-desc-2'>Next<\/desc>\n<path d=\"M0.416 27.84l11.456-11.84-11.456-11.904q-0.832-0.832 0-1.536 0.832-0.832 1.536 0l12.544 12.608q0.768 0.832 0 1.6l-12.544 12.608q-0.704 0.832-1.536 0-0.832-0.704 0-1.536z\"><\/path>\n<\/svg><span class='avia_hidden_link_text'>Next<\/span><\/a><\/div><div class='avia-slideshow-dots avia-slideshow-controls'><a href='#1' class='goto-slide active' >1<\/a><a href='#2' class='goto-slide ' >2<\/a><a href='#3' class='goto-slide ' >3<\/a><a href='#4' class='goto-slide ' >4<\/a><a href='#5' class='goto-slide ' >5<\/a><a href='#6' class='goto-slide ' >6<\/a><a href='#7' class='goto-slide ' >7<\/a><a href='#8' class='goto-slide ' >8<\/a><a href='#9' class='goto-slide ' >9<\/a><a href='#10' class='goto-slide ' >10<\/a><a href='#11' class='goto-slide ' >11<\/a><a href='#12' class='goto-slide ' >12<\/a><a href='#13' class='goto-slide ' >13<\/a><a href='#14' class='goto-slide ' >14<\/a><\/div><\/div>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-1q2x26-cd2e26f5842a3371bf39ad33c96f7f63\">\n#top .av-special-heading.av-1q2x26-cd2e26f5842a3371bf39ad33c96f7f63{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-1q2x26-cd2e26f5842a3371bf39ad33c96f7f63 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-1q2x26-cd2e26f5842a3371bf39ad33c96f7f63 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-1q2x26-cd2e26f5842a3371bf39ad33c96f7f63 av-special-heading-h3  avia-builder-el-1  el_after_av_slideshow  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Smallpaint<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-18h483y-6b4d4b76022576b812ff7a4e6f7f2cd9 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p style=\"text-align: justify;\">Smallpaint\u00a0is a renderer program implementing the classic Monte Carlo path tracing global illumination algorithm. Looking at the images\u00a0above, you may not see what you would expect from a such a ray tracer: it has an interesting look which resembles the viewer of a painting. Please meet\u00a0<strong><em>smallpaint<\/em><\/strong>.<\/p>\n<p style=\"text-align: justify;\">\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-16iaxf2-8b279988466d46c79673bfa0877ce3c5\">\n#top .hr.hr-invisible.av-16iaxf2-8b279988466d46c79673bfa0877ce3c5{\nheight:25px;\n}\n<\/style>\n<div  class='hr av-16iaxf2-8b279988466d46c79673bfa0877ce3c5 hr-invisible  avia-builder-el-3  el_after_av_textblock  el_before_av_video '><span class='hr-inner '><span class=\"hr-inner-style\"><\/span><\/span><\/div>\n<div  class='avia-video av-4424j2-b99ad1da33803083387565ced6adf148 avia-video-16-9 av-no-preview-image avia-video-load-always av-lazyload-immediate av-lazyload-video-embed'  itemprop=\"video\" itemtype=\"https:\/\/schema.org\/VideoObject\"  data-original_url='https:\/\/www.youtube.com\/watch?v=FVVtSLqG804'><script type='text\/html' class='av-video-tmpl'><div class='avia-iframe-wrap'><iframe loading=\"lazy\" title=\"Smallpaint - an educational renderer, now with awesome new features!\" width=\"1500\" height=\"844\" src=\"https:\/\/www.youtube.com\/embed\/FVVtSLqG804?feature=oembed&autoplay=0&loop=0&controls=1&mute=0\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/div><\/script><div class='av-click-to-play-overlay'><div class=\"avia_playpause_icon\"><\/div><\/div><\/div>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-fq4x8e-5b17235016a5f7c9c2c0a3395156b1e3\">\n#top .av-special-heading.av-fq4x8e-5b17235016a5f7c9c2c0a3395156b1e3{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-fq4x8e-5b17235016a5f7c9c2c0a3395156b1e3 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-fq4x8e-5b17235016a5f7c9c2c0a3395156b1e3 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-fq4x8e-5b17235016a5f7c9c2c0a3395156b1e3 av-special-heading-h3  avia-builder-el-5  el_after_av_video  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Features<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-1213tdq-b8d90b1b2c11262627ca2154dfbad454 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><ul>\n<li>implementation in ~<em>250<\/em>\u00a0effective lines of code,<\/li>\n<li>multi-threaded rendering thanks to the OpenMP library,<\/li>\n<li>some\u00a0<em>c++11<\/em> wizardry (ty\u00a0<em>CsL!<\/em>),<\/li>\n<li>quasi-monte carlo sampling using low-discrepancy\u00a0<em>Halton series<\/em>,<\/li>\n<li>cosine importance sampling,<\/li>\n<li>faster convergence through next event estimation (<em>currently removed<\/em>),<\/li>\n<li>soft shadows, antialiasing by integrating over the screen pixels (path tracing),<\/li>\n<li>refractions, color bleeding, caustics,<\/li>\n<li>can be compiled into a binary with less than 4096 bytes (an image of the full <strong><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/smallpaintb.png\" target=\"_blank\" rel=\"noopener\">binary<\/a><\/strong>),<\/li>\n<li>&#8230;and most importantly:\u00a0<strong><em>a great painterly look.<\/em><\/strong><em>\u00a0<\/em>Hence, it is called smallpaint,<\/li>\n<li><strong>(new)<\/strong> algorithms implemented as of early 2017: path tracing, volumetric path tracing, primary sample space metropolis light transport, progressive photon mapping, <strong>virtual ray lights<\/strong>, 1D multiple importance sampling.<strong><br \/>\n<\/strong><\/li>\n<\/ul>\n<p><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/gfx\/rendering-course\/\"><strong><em>The entirety of our Rendering course describing these techniques is now available here<\/em><\/strong><strong><em>.<\/em><\/strong><\/a><\/p>\n<p><em>License: The source code is under the permissive <strong><a href=\"https:\/\/tldrlegal.com\/license\/mit-license\">MIT<\/a><\/strong> license. Feel free to reuse the materials and hack away at the code! If you built something on top of this, please drop me a message \u2013 I\u2019d love to see where others take these ideas and will leave links to the best ones here.<\/em><\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-epyesu-9b11dd553787cc42bb370d2a405f48c3\">\n#top .av-special-heading.av-epyesu-9b11dd553787cc42bb370d2a405f48c3{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-epyesu-9b11dd553787cc42bb370d2a405f48c3 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-epyesu-9b11dd553787cc42bb370d2a405f48c3 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-epyesu-9b11dd553787cc42bb370d2a405f48c3 av-special-heading-h3  avia-builder-el-7  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Knobs and switches<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-y5ciu6-96a530125eb185e7cfb5a0026741770b '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><ul>\n<li>adjust the\u00a0<em>params[&#8220;spp&#8221;]<\/em>\u00a0to acquire a clearer or grainier picture of your choice,<\/li>\n<li>pick a refraction index for the glass sphere with\u00a0<em>params[&#8220;refr_index&#8221;]<\/em>,<\/li>\n<li>tinkering around with the rest of the code is completely up to\u00a0you<em>!<\/em><\/li>\n<\/ul>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-cbe75q-9e95c6f5b61d686c44f064c3232fed1b\">\n#top .av-special-heading.av-cbe75q-9e95c6f5b61d686c44f064c3232fed1b{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-cbe75q-9e95c6f5b61d686c44f064c3232fed1b .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-cbe75q-9e95c6f5b61d686c44f064c3232fed1b .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-cbe75q-9e95c6f5b61d686c44f064c3232fed1b av-special-heading-h3  avia-builder-el-9  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >What\u2019s causing this?<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-uzjxzi-5526f18e160ae05b654ae9f60355f573 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p style=\"text-align: justify;\">The cause of the painterly look is actually a bug &#8211; there&#8217;s an incorrect usage of the Halton-series with correlating dimensions, and the errors are spread throughout the screen with an equally wrong sampling function. one would wish that every bug could look just as beautiful as this one.<\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-a9oy6m-eb87ad684fa08fa8577f0d6ceb9acdf0\">\n#top .av-special-heading.av-a9oy6m-eb87ad684fa08fa8577f0d6ceb9acdf0{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-a9oy6m-eb87ad684fa08fa8577f0d6ceb9acdf0 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-a9oy6m-eb87ad684fa08fa8577f0d6ceb9acdf0 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-a9oy6m-eb87ad684fa08fa8577f0d6ceb9acdf0 av-special-heading-h3  avia-builder-el-11  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Important note<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-2qonby-ebf1798f59bde80ed81a69718230ea50 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p style=\"text-align: justify;\">If you take a closer look at the source code, you may notice that smallpaint\u00a0doesn&#8217;t do any kind of tone mapping &#8211; it directly writes the measured contributions\u00a0into the image file. Also, there are some magic constants used as scaling factors here and there.<\/p>\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">When doing ray tracing, the goal is to compute the radiance returning to the eye along rays of light through each pixel of an image. As a last step, we map these values to &#8211; for example &#8211; RGB values for visualization. Trying to measure RGB intensities directly does not make any sense, and is also\u00a0<em>scientifically unacceptable<\/em>. The reason for omitting this from\u00a0<em><strong>smallpaint<\/strong><\/em>\u00a0is solely to save a few lines of code. Y<em>our computer graphics professor would probably throw lightning bolts at you for this.<\/em><\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-95qjry-33f2e512614c434544cb99fe46f206a3\">\n#top .av-special-heading.av-95qjry-33f2e512614c434544cb99fe46f206a3{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-95qjry-33f2e512614c434544cb99fe46f206a3 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-95qjry-33f2e512614c434544cb99fe46f206a3 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-95qjry-33f2e512614c434544cb99fe46f206a3 av-special-heading-h3  avia-builder-el-13  el_after_av_textblock  el_before_av_one_fourth '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Download smallpaint<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<div  class='flex_column av-njso3i-0f027a81c63bdf3fb6a6c208ae006b6d av_one_fourth  avia-builder-el-14  el_after_av_heading  el_before_av_one_fourth  first flex_column_div  '     ><p>\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-n4n6r2-38ab00b6e4331f67c4a1290e50de69a0\">\n.avia-image-container.av-n4n6r2-38ab00b6e4331f67c4a1290e50de69a0 img.avia_image{\nbox-shadow:none;\n}\n.avia-image-container.av-n4n6r2-38ab00b6e4331f67c4a1290e50de69a0 .av-image-caption-overlay-center{\ncolor:#ffffff;\n}\n<\/style>\n<div  class='avia-image-container av-n4n6r2-38ab00b6e4331f67c4a1290e50de69a0 av-styling- av-img-linked avia_animated_image av-animated-when-visible-95 left-to-right avia-align-center  avia-builder-el-15  el_before_av_textblock  avia-builder-el-first '   itemprop=\"image\" itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/ImageObject\" ><div class=\"avia-image-container-inner\"><div class=\"avia-image-overlay-wrap\"><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/smallpaint.zip\" class='avia_image '  target=\"_blank\"  rel=\"noopener noreferrer\" aria-label='code-icon'><img decoding=\"async\" width=\"180\" height=\"180\" fetchpriority=\"high\" class='wp-image-2653 avia-img-lazy-loading-not-2653 avia_image ' src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-180x180.png\" alt='' title='code-icon'   itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-180x180.png 180w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-80x80.png 80w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-36x36.png 36w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-120x120.png 120w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-450x450.png 450w\" sizes=\"(max-width: 180px) 100vw, 180px\" \/><\/a><\/div><\/div><\/div><br \/>\n<section  class='av_textblock_section av-k0ru6m-ead9fc0913755927500769e32f54a25a '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p style=\"text-align: center;\"><strong>Code (with GUI)<br \/>\n<\/strong><\/p>\n<\/div><\/section><\/p><\/div>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-j6avfy-163bd441a37af05da03aa5f0eb3d35b9\">\n.flex_column.av-j6avfy-163bd441a37af05da03aa5f0eb3d35b9{\nborder-radius:0px 0px 0px 0px;\npadding:0px 0px 0px 0px;\n}\n<\/style>\n<div  class='flex_column av-j6avfy-163bd441a37af05da03aa5f0eb3d35b9 av_one_fourth  avia-builder-el-17  el_after_av_one_fourth  el_before_av_heading  flex_column_div av-zero-column-padding  '     ><p>\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-hj1tbi-39af89638114fcaf980e1dcac40d061e\">\n.avia-image-container.av-hj1tbi-39af89638114fcaf980e1dcac40d061e img.avia_image{\nbox-shadow:none;\n}\n.avia-image-container.av-hj1tbi-39af89638114fcaf980e1dcac40d061e .av-image-caption-overlay-center{\ncolor:#ffffff;\n}\n<\/style>\n<div  class='avia-image-container av-hj1tbi-39af89638114fcaf980e1dcac40d061e av-styling- av-img-linked avia_animated_image av-animated-when-visible-95 left-to-right avia-align-center  avia-builder-el-18  el_before_av_textblock  avia-builder-el-first '   itemprop=\"image\" itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/ImageObject\" ><div class=\"avia-image-container-inner\"><div class=\"avia-image-overlay-wrap\"><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/smallpaint_old.zip\" class='avia_image '  target=\"_blank\"  rel=\"noopener noreferrer\" aria-label='code-icon'><img decoding=\"async\" width=\"180\" height=\"180\" fetchpriority=\"high\" class='wp-image-2653 avia-img-lazy-loading-not-2653 avia_image ' src=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-180x180.png\" alt='' title='code-icon'   itemprop=\"thumbnailUrl\" srcset=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-180x180.png 180w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-80x80.png 80w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-36x36.png 36w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-120x120.png 120w, https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2014\/02\/code-icon-450x450.png 450w\" sizes=\"(max-width: 180px) 100vw, 180px\" \/><\/a><\/div><\/div><\/div><br \/>\n<section  class='av_textblock_section av-fg4u9q-03745d092660a8583db9f8727620b3a2 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p style=\"text-align: center;\"><strong>Code (old, no GUI)<br \/>\n<\/strong><\/p>\n<\/div><\/section><\/p><\/div>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-76fgni-fd28b22979804b3ba17e7558f2b737ad\">\n#top .av-special-heading.av-76fgni-fd28b22979804b3ba17e7558f2b737ad{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-76fgni-fd28b22979804b3ba17e7558f2b737ad .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-76fgni-fd28b22979804b3ba17e7558f2b737ad .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-76fgni-fd28b22979804b3ba17e7558f2b737ad av-special-heading-h3  avia-builder-el-20  el_after_av_one_fourth  el_before_av_video '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Code walkthrough lecture<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<div  class='avia-video av-c97bni-852173a867ad0e5e6751cb5e7255b51a avia-video-16-9 av-no-preview-image avia-video-load-always av-lazyload-immediate av-lazyload-video-embed'  itemprop=\"video\" itemtype=\"https:\/\/schema.org\/VideoObject\"  data-original_url='https:\/\/www.youtube.com\/watch?v=cDi-uti2oLQ'><script type='text\/html' class='av-video-tmpl'><div class='avia-iframe-wrap'><iframe loading=\"lazy\" title=\"TU Wien Rendering #29 - Path Tracing Implementation &amp; Code Walkthrough\" width=\"1500\" height=\"844\" src=\"https:\/\/www.youtube.com\/embed\/cDi-uti2oLQ?feature=oembed&autoplay=0&loop=0&controls=1&mute=0\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/div><\/script><div class='av-click-to-play-overlay'><div class=\"avia_playpause_icon\"><\/div><\/div><\/div>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-lcmdkt5r-a263abef53854b89818d190a663a019f\">\n#top .av-special-heading.av-lcmdkt5r-a263abef53854b89818d190a663a019f{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-lcmdkt5r-a263abef53854b89818d190a663a019f .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-lcmdkt5r-a263abef53854b89818d190a663a019f .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-lcmdkt5r-a263abef53854b89818d190a663a019f av-special-heading-h3  avia-builder-el-22  el_after_av_video  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Community contributions<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-lcmdm51u-8637bdfbb5f338be3a546dfba112f1e6 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p>2023. 01. 07. Lucas Franca added a <strong><a href=\"https:\/\/github.com\/hukasu\/smallpaint\">Rust implementation<\/a><\/strong>. Thank you!<\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-6hx9e6-007b37f80e2e1d5dc61b8995319638e6\">\n#top .av-special-heading.av-6hx9e6-007b37f80e2e1d5dc61b8995319638e6{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-6hx9e6-007b37f80e2e1d5dc61b8995319638e6 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-6hx9e6-007b37f80e2e1d5dc61b8995319638e6 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-6hx9e6-007b37f80e2e1d5dc61b8995319638e6 av-special-heading-h3  avia-builder-el-24  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >BibTeX<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-9trtgu-b2209ff0f22b28c49b5ee37a3d7ee2f9 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p>If you made use of this work in your research work, please consider adding the following citation.<\/p>\n<p><em>@misc{Smallpaint,<\/em><br \/>\n<em> Author = {K'{a}roly Zsolnai-Feh'{e}r},<\/em><br \/>\n<em> Year = {2018},<\/em><br \/>\n<em> Note = {https:\/\/users.cg.tuwien.ac.at\/zsolnai\/gfx\/smallpaint\/},<\/em><br \/>\n<em> Title = {Smallpaint: A Global Illumination Renderer}<\/em><br \/>\n<em> }<\/em><\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-43yp2m-b18722f5ce2c45dab3d83c98c2c8d56b\">\n#top .av-special-heading.av-43yp2m-b18722f5ce2c45dab3d83c98c2c8d56b{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-43yp2m-b18722f5ce2c45dab3d83c98c2c8d56b .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-43yp2m-b18722f5ce2c45dab3d83c98c2c8d56b .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-43yp2m-b18722f5ce2c45dab3d83c98c2c8d56b av-special-heading-h3  avia-builder-el-26  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Changelog for smallpaint<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-njqse-290ed41813f9537bce24561ada4cea27 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><p><em><strong>2010.11.11<\/strong> changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li>the usage of rand() instead of rand_r() caused performance issues on linux systems.<span style=\"font-size: 14px; line-height: 1.5em;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><em><strong>2013.03.08<\/strong> changelog:<\/em><\/p>\n<ul>\n<li>the solution to the sampling problem is added as commented code,<\/li>\n<li>the fixed version of the path tracer is added to the package,<\/li>\n<li>slight code cleanup.<span style=\"font-size: 14px; line-height: 1.5em;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><em><strong>2013.05.11<\/strong> changelog:\u00a0<\/em><\/p>\n<ul>\n<li><strong>Christian Hafner<\/strong> adds Schlick&#8217;s approximation to the Fresnel equation. It is included in the fixed version of the code. Thank you!<span style=\"font-size: 14px; line-height: 1.5em;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><em><strong>2013.05.18<\/strong> changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li><strong>Christian Machacek<\/strong> adds Russian Roulette path termination and other code improvements. It is included in the fixed version of the code. Thank you!<span style=\"font-size: 14px; line-height: 1.5em;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><em><strong>2013.07.12 <\/strong> changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li><strong>Christian Machacek<\/strong> adds a pbrt-inspired BVH implementation and lots of various other fixes. Thank you!<span style=\"font-size: 14px; line-height: 1.5em;\">\u00a0<\/span><\/li>\n<\/ul>\n<p><em><strong>2013.07.15 <\/strong>changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li><strong>Jean-Baptiste Kaiser<\/strong> adds a neat implementation of Kelemen et. al&#8217;s Primary Sample Space Metropolis Light Transport (<a href=\"http:\/\/www.iit.bme.hu\/~szirmay\/paper50_electronic.pdf\">PSSMLT<\/a>) algorithm. Good job, thank you!<\/li>\n<\/ul>\n<p><em><strong>2015.01.16 <\/strong>changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li><strong>Georg Sperl<\/strong> adds a volumetric path tracing variant which is now included in the code archive. Thank you!<\/li>\n<\/ul>\n<p><em><strong>2015.05.01 <\/strong>changelog:<br \/>\n<\/em><\/p>\n<ul>\n<li><strong>Georg Sperl<\/strong> adds <strong><a href=\"http:\/\/www.cs.cornell.edu\/courses\/cs6630\/2012sp\/notes\/09volpath.pdf\" target=\"_blank\" rel=\"noopener\">Woodcock-tracking<\/a><\/strong>. It can render heterogeneous volumes like\u00a0<strong><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2015\/05\/final2.png\" target=\"_blank\" rel=\"noopener\">this<\/a><\/strong> and\u00a0<strong><a href=\"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp\/wp-content\/uploads\/2015\/05\/final1.png\" target=\"_blank\" rel=\"noopener\">this<\/a>.\u00a0<\/strong>Thank you!<\/li>\n<\/ul>\n<p><strong>2015.05.26<\/strong><em> changelog:<\/em><strong><br \/>\n<\/strong><\/p>\n<ul>\n<li>I added an implementation of multiple importance sampling for two\u00a0Monte Carlo\u00a0estimators in 1D.\u00a0Kind thanks for\u00a0<strong><a href=\"http:\/\/cgg.mff.cuni.cz\/~jaroslav\/\" target=\"_blank\" rel=\"noopener\">Jaroslav K\u0159iv\u00e1nek<\/a><\/strong> for pushing a fix as well!<\/li>\n<\/ul>\n<p><strong>2017.03.21<\/strong><em> changelog:<\/em><\/p>\n<ul>\n<li><strong>Michael Oppitz<\/strong> added a full GUI around smallpaint and a progressive photon mapping implementation. Make sure to have a look at this, it&#8217;s super fun to use. Thank you!<\/li>\n<\/ul>\n<p><strong>2018.06.25<\/strong><em> changelog:<\/em><\/p>\n<ul>\n<li><strong>Michael Oppitz<\/strong> added a <strong>virtual ray lights<\/strong> implementation. Thank you!<\/li>\n<\/ul>\n<p><strong>2020.02.26<\/strong> changelog:<\/p>\n<ul>\n<li>This work is now under the permissive MIT license. Go nuts!<\/li>\n<\/ul>\n<p>Also, make sure to check out <strong><a href=\"https:\/\/bitbucket.org\/adamce\/viennarenderer\/wiki\/Home\">Adam Celarek<\/a><\/strong>&#8216;s\u00a0course project as well on path tracing, bidirectional path tracing and photon tracing.<\/p>\n<\/div><\/section>\n\n<style type=\"text\/css\" data-created_by=\"avia_inline_auto\" id=\"style-css-av-2k3ldq-70fbc5044bb285cecfa5059f210e6c11\">\n#top .av-special-heading.av-2k3ldq-70fbc5044bb285cecfa5059f210e6c11{\npadding-bottom:10px;\n}\nbody .av-special-heading.av-2k3ldq-70fbc5044bb285cecfa5059f210e6c11 .av-special-heading-tag .heading-char{\nfont-size:25px;\n}\n.av-special-heading.av-2k3ldq-70fbc5044bb285cecfa5059f210e6c11 .av-subheading{\nfont-size:15px;\n}\n<\/style>\n<div  class='av-special-heading av-2k3ldq-70fbc5044bb285cecfa5059f210e6c11 av-special-heading-h3  avia-builder-el-28  el_after_av_textblock  el_before_av_textblock '><h3 class='av-special-heading-tag '  itemprop=\"headline\"  >Thanks to<\/h3><div class=\"special-heading-border\"><div class=\"special-heading-inner-border\"><\/div><\/div><\/div>\n<section  class='av_textblock_section av-2pif9q-914851641b8d60df6e0226f8d4ba4439 '   itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock'  itemprop=\"text\" ><ul>\n<li><a href=\"http:\/\/www.fsz.bme.hu\/~szirmay\/szirmay.html\"><strong>L\u00e1szl\u00f3 Szirmay-Kalos<\/strong><\/a>, my former computer graphics advisor,<\/li>\n<li><a href=\"https:\/\/www.cg.tuwien.ac.at\/staff\/MichaelWimmer.html\"><strong>Michael Wimmer<\/strong><\/a>, my current one,<\/li>\n<li><strong><a href=\"http:\/\/www.kevinbeason.com\/\">Kevin Beason<\/a><\/strong>\u00a0for the inspiring\u00a0<strong><a href=\"http:\/\/www.kevinbeason.com\/smallpt\/\">smallpt<\/a><\/strong>\u00a0renderer,<\/li>\n<li><strong>Jochen Eisner<\/strong> for his remarks about\u00a0<em>rand_r()<\/em>\u00a0and\u00a0<em>lambda functions<\/em>,<\/li>\n<li>the\u00a0<strong><a href=\"http:\/\/ompf2.com\/\">ompf.org forum<\/a><\/strong>\u00a0for all the good people addicted to ray tracing and global illumination,<\/li>\n<li>my <strong>students<\/strong> who have been hard at work to improve <em>smallpaint<\/em>\u00a0and to add lots of goodies!<\/li>\n<\/ul>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":2326,"template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"tags":[186,182,172,249,251,36,250,247,43,89,248,183,44,246],"portfolio_category":[],"portfolio_tag":[37,239,237,38,238],"portfolio_entries":[],"class_list":["post-2350","portfolio","type-portfolio","status-publish","has-post-thumbnail","hentry","tag-education","tag-global-illumination","tag-karoly-zsolnai","tag-karoly-zsolnai-feher","tag-light-simulation","tag-metropolis-light-transport","tag-michael-oppitz","tag-multiple-importance-sampling","tag-path-tracing","tag-photorealistic-rendering","tag-progressive-photon-mapping","tag-rendering","tag-teaching","tag-volumetric-path-tracing","portfolio_tag-global-illumination","portfolio_tag-monte-carlo-path-tracing","portfolio_tag-path-tracing","portfolio_tag-rendering","portfolio_tag-smallpaint"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio\/2350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio"}],"about":[{"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/types\/portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":70,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio\/2350\/revisions"}],"predecessor-version":[{"id":5130,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio\/2350\/revisions\/5130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/media\/2326"}],"wp:attachment":[{"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/media?parent=2350"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/tags?post=2350"},{"taxonomy":"portfolio_category","embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio_category?post=2350"},{"taxonomy":"portfolio_tag","embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio_tag?post=2350"},{"taxonomy":"portfolio_entries","embeddable":true,"href":"https:\/\/users.cg.tuwien.ac.at\/zsolnai\/wp-json\/wp\/v2\/portfolio_entries?post=2350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}