{"id":1756,"date":"2023-01-28T07:40:30","date_gmt":"2023-01-27T22:40:30","guid":{"rendered":"http:\/\/lousodrome.net\/blog\/light\/?p=1756"},"modified":"2023-02-26T00:24:28","modified_gmt":"2023-02-25T15:24:28","slug":"a-list-of-path-tracing-shaders","status":"publish","type":"post","link":"https:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/","title":{"rendered":"A list of path tracing shaders"},"content":{"rendered":"\n<p>I have gathered a <a href=\"https:\/\/www.shadertoy.com\/playlist\/sfcGR2\">list of path tracing shaders on ShaderToy<\/a>.<\/p>\n\n\n\n<p>Path tracing is a surprisingly simple technique to render realistic images. This would be my definition if you are unfamiliar with the term. But if you already have experience with various ray tracing techniques, I would probably say that path tracing is a remarkably elegant solution to the rendering equation. You can <a href=\"https:\/\/raytracing.github.io\/\">implement a toy path tracer in a weekend<\/a> or, if you&#8217;ve already done it a few times before, <a href=\"https:\/\/www.youtube.com\/watch?v=bp37xTVNRrM&amp;t=16031s\">within 25 minutes<\/a>.<\/p>\n\n\n\n<p>Recently I was documenting myself on path tracing, and some of the techniques that can be used, like next event estimation, bidirectional path tracing, Russian roulette, etc. This is a case where <a href=\"https:\/\/www.shadertoy.com\/\">ShaderToy<\/a> can be an invaluable source of examples and information, and so I was browsing path tracing shaders there. As the number of open tabs was starting to get impractical, I decided to use the &#8220;playlist&#8221; feature of ShaderToy to bookmark them all.<\/p>\n\n\n\n<p>You can find the list here: <a href=\"https:\/\/www.shadertoy.com\/playlist\/sfcGR2\">Path tracing, on ShaderToy<\/a>.<\/p>\n\n\n\n<p>The examples of path tracers listed include very naive implementations, hacky ones, rendering features like advanced BRDF, volumetric lighting or spectral rendering, or various noise reduction techniques such as next event estimation, bidirectional path tracing, multiple importance sampling, accumulation over frames with temporal reprojection, screen space blue noise, or convolutional neural network based denoising.<\/p>\n\n\n\n<p>Some of those shaders are meant to be artworks, but even the technical experimentation ones look nice, because the global illumination inherent to path tracing tends to generate images that are pretty.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.shadertoy.com\/playlist\/sfcGR2\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-500x250.jpg\" alt=\"Screenshot of the list on ShaderToy, with various kinds of path tracers visible.\" class=\"wp-image-1757\" width=\"500\" height=\"250\" title=\"Path tracing list on ShaderToy\" srcset=\"https:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-500x250.jpg 500w, https:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-300x150.jpg 300w, https:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-768x384.jpg 768w, https:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing.jpg 1200w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Path tracing is a surprisingly simple technique to render realistic images. Recently I was documenting myself on path tracing, and some of the techniques that can be used, and decided to make a list of path tracing shaders on ShaderToy. <a href=\"https:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,17],"tags":[65,942,940,941,935,325,470,467,468,939,938,185,126,728,442,943,522],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A list of path tracing shaders &ndash; Light is beautiful<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A list of path tracing shaders &ndash; Light is beautiful\" \/>\n<meta property=\"og:description\" content=\"Path tracing is a surprisingly simple technique to render realistic images. Recently I was documenting myself on path tracing, and some of the techniques that can be used, and decided to make a list of path tracing shaders on ShaderToy. Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\" \/>\n<meta property=\"og:site_name\" content=\"Light is beautiful\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-27T22:40:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-25T15:24:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-featured.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"515\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Julien Guertault\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Zavie\" \/>\n<meta name=\"twitter:site\" content=\"@Zavie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Guertault\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\"},\"author\":{\"name\":\"Julien Guertault\",\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"headline\":\"A list of path tracing shaders\",\"datePublished\":\"2023-01-27T22:40:30+00:00\",\"dateModified\":\"2023-02-25T15:24:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\"},\"wordCount\":260,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"keywords\":[\"BRDF\",\"Burley 2012\",\"CNN\",\"convolutional neural network\",\"denoising\",\"Disney\",\"importance sampling\",\"MIS\",\"multiple importance sampling\",\"NEE\",\"next event estimation\",\"path tracing\",\"ray tracing\",\"Russian roulette\",\"Shadertoy\",\"spectral rendering\",\"volumetric lighting\"],\"articleSection\":[\"Random\",\"Rendering\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\",\"url\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\",\"name\":\"A list of path tracing shaders &ndash; Light is beautiful\",\"isPartOf\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#website\"},\"datePublished\":\"2023-01-27T22:40:30+00:00\",\"dateModified\":\"2023-02-25T15:24:28+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lousodrome.net\/blog\/light\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A list of path tracing shaders\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#website\",\"url\":\"https:\/\/lousodrome.net\/blog\/light\/\",\"name\":\"Light is beautiful\",\"description\":\"Thoughts of a graphics programmer, demoscener and spare time photographer\",\"publisher\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lousodrome.net\/blog\/light\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\",\"name\":\"Julien Guertault\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"caption\":\"Julien Guertault\"},\"logo\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/lousodrome.net\/blog\/light\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A list of path tracing shaders &ndash; Light is beautiful","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/","og_locale":"en_US","og_type":"article","og_title":"A list of path tracing shaders &ndash; Light is beautiful","og_description":"Path tracing is a surprisingly simple technique to render realistic images. Recently I was documenting myself on path tracing, and some of the techniques that can be used, and decided to make a list of path tracing shaders on ShaderToy. Continue reading &rarr;","og_url":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/","og_site_name":"Light is beautiful","article_published_time":"2023-01-27T22:40:30+00:00","article_modified_time":"2023-02-25T15:24:28+00:00","og_image":[{"width":1200,"height":515,"url":"http:\/\/lousodrome.net\/blog\/light\/files\/2023\/01\/2023-01-27-ShaderToy-playlist-Path-tracing-featured.jpg","type":"image\/jpeg"}],"author":"Julien Guertault","twitter_card":"summary_large_image","twitter_creator":"@Zavie","twitter_site":"@Zavie","twitter_misc":{"Written by":"Julien Guertault","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#article","isPartOf":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/"},"author":{"name":"Julien Guertault","@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"headline":"A list of path tracing shaders","datePublished":"2023-01-27T22:40:30+00:00","dateModified":"2023-02-25T15:24:28+00:00","mainEntityOfPage":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/"},"wordCount":260,"commentCount":0,"publisher":{"@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"keywords":["BRDF","Burley 2012","CNN","convolutional neural network","denoising","Disney","importance sampling","MIS","multiple importance sampling","NEE","next event estimation","path tracing","ray tracing","Russian roulette","Shadertoy","spectral rendering","volumetric lighting"],"articleSection":["Random","Rendering"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/","url":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/","name":"A list of path tracing shaders &ndash; Light is beautiful","isPartOf":{"@id":"https:\/\/lousodrome.net\/blog\/light\/#website"},"datePublished":"2023-01-27T22:40:30+00:00","dateModified":"2023-02-25T15:24:28+00:00","breadcrumb":{"@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/lousodrome.net\/blog\/light\/2023\/01\/28\/a-list-of-path-tracing-shaders\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lousodrome.net\/blog\/light\/"},{"@type":"ListItem","position":2,"name":"A list of path tracing shaders"}]},{"@type":"WebSite","@id":"https:\/\/lousodrome.net\/blog\/light\/#website","url":"https:\/\/lousodrome.net\/blog\/light\/","name":"Light is beautiful","description":"Thoughts of a graphics programmer, demoscener and spare time photographer","publisher":{"@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lousodrome.net\/blog\/light\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f","name":"Julien Guertault","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","caption":"Julien Guertault"},"logo":{"@id":"https:\/\/lousodrome.net\/blog\/light\/#\/schema\/person\/image\/"},"url":"https:\/\/lousodrome.net\/blog\/light\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts\/1756"}],"collection":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/comments?post=1756"}],"version-history":[{"count":3,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts\/1756\/revisions"}],"predecessor-version":[{"id":1764,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/posts\/1756\/revisions\/1764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/media\/1759"}],"wp:attachment":[{"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/media?parent=1756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/categories?post=1756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/light\/wp-json\/wp\/v2\/tags?post=1756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}