{"id":330,"date":"2018-06-20T19:07:42","date_gmt":"2018-06-20T16:07:42","guid":{"rendered":"http:\/\/kadircenk.com\/blog\/?p=330"},"modified":"2019-02-07T19:34:14","modified_gmt":"2019-02-07T16:34:14","slug":"trace-the-ray-part-8-project-bidirectional-path-tracing","status":"publish","type":"post","link":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/","title":{"rendered":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)"},"content":{"rendered":"<p>Hello trace-masters!<\/p>\n<p>In this post, I will first give some information on indirect illumination in ray tracing and bidirectional path tracing algorithm, and then I will write about how I have implemented my term project, a naive version of the <a href=\"https:\/\/graphics.stanford.edu\/courses\/cs348b-03\/papers\/veach-chapter10.pdf\" target=\"_blank\" rel=\"noopener\">Bidirectional Path Tracing (BDPT) algorithm<\/a>. Moreover, I will provide a comparison of my BDPT outputs with my ray tracer and path tracer outputs.<\/p>\n<p><!--more--><\/p>\n<h4>Bidirectional Path Tracing<\/h4>\n<p>A normal forward path tracer recursively evaluates the rendering equation using Monte Carlo integration. In order to reduce variance, forward path tracers usually evaluate direct and indirect lighting separately at each step; that is how my path tracer works. Practically this is implemented by evaluating the contribution at each bounce as the sum of a shadow ray and the continuation (recursion) ray.<\/p>\n<p>Forward path tracers are slow to converge in situations where the scene is lit mostly by indirect lighting, since the shadow rays always target a light source. This issue can be solved by using bidirectional path tracing idea, where in addition to the camera ray path, we also trace a &#8220;light ray path&#8221; starting from a point on the light towards the objects in the scene, and then connecting these paths to get the final color contribution on the pixel. Below is a screenshot that demonstrates the process:<\/p>\n<figure id=\"attachment_331\" aria-describedby=\"caption-attachment-331\" style=\"width: 548px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"331\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/bdpt1\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png\" data-orig-size=\"548,188\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"bdpt1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png\" class=\"wp-image-331 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png\" alt=\"\" width=\"548\" height=\"188\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png 548w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1-300x103.png 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><figcaption id=\"caption-attachment-331\" class=\"wp-caption-text\">Camera path and light path demonstration. Image courtesy: Veach&#8217;s BDPT paper, link is available at the top of this post.<\/figcaption><\/figure>\n<p>The points (x0, x1, x2, x3 and x4) on the image above are called the\u00a0<strong>vertices<\/strong>. There are\u00a0<strong>t<\/strong>\u00a0many camera path vertices (x0 and x1), and\u00a0<strong>s<\/strong>\u00a0many light path vertices (x4, x3 and x2). BDPT algorithm creates different paths by connecting each of those t vertices with\u00a0each of those s vertices, and then uses\u00a0<a href=\"https:\/\/graphics.stanford.edu\/courses\/cs348b-03\/papers\/veach-chapter9.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Multiple Importance Sampling (MIS)<\/strong><\/a> to weight those paths to finalize a color contribution that have the most benefit for the pixel under consideration. The image below, which is taken from Veach&#8217;s paper together with its caption, demonstrates the cases for different t and s values, when t + s is 3, and the final path length <strong>k<\/strong> is 2:<\/p>\n<figure id=\"attachment_332\" aria-describedby=\"caption-attachment-332\" style=\"width: 648px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"332\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/bdpt2\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt2.png\" data-orig-size=\"648,515\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"bdpt2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt2.png\" class=\"wp-image-332 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt2.png\" alt=\"\" width=\"648\" height=\"515\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt2.png 648w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt2-300x238.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><figcaption id=\"caption-attachment-332\" class=\"wp-caption-text\">Each t and s value results in a different case. Image courtesy: Veach&#8217;s BDPT paper, link is available at the top of this post.<\/figcaption><\/figure>\n<h4>My BDPT Implementation<\/h4>\n<p><span style=\"font-weight: 400;\">In my ray tracer, if the <strong>&lt;IntegratorParams&gt;<\/strong>\u00a0tag in the scene file is given as <strong>Bidirectional<\/strong>, then my BDPT implementation, which I have implemented as follows, comes into the play.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">First, I recursively trace a camera ray path until the max recursion depth is reached. At this point, the camera path with t vertices becomes ready. Then, I choose a point on the light, and start tracing a light ray from that point into the scene with s = 2; meaning that my implementation of light path tracing halts at the first hit of the light path by recording the hitInfo at that point. It can be surely said that this hit point receives direct light from the light source, as the ray starting from the light has been reached there without hitting any obstacle.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">Next, we need to connect the camera path to the light path that have been recorded, so that the finalized path starts at camera, ends at the light, and so the current pixel that the path is connected to receives some light. A very important task to be done before connecting those subpaths is the visibility check between the last hit point of the camera path (say <strong>xc<\/strong>) and the last hit point of the light path (say <strong>xl<\/strong>). I implemented this check by sending a ray that is epsilon away from xc towards the normal direction, and whose direction is <strong>Vec3f(normalize(xl \u2013 xc))<\/strong>. If the ray does not hit any obstacle, then it can be safely said that these subpaths can be connected and the pixel can be enlightened; else, we do not consider this path, as no light can reach from xl to xc.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\">In my implementation, I create 1 final full path for each ray sent from the camera. At each vertex of this full path, starting from the light vertex, the color value is weighted by the pdf and sent back towards the vertex on the camera. I do not calculate different combinations of t and s and weight their contributions by using MIS. Instead, I use high MSAA number for each pixel (meaning that high number of full paths are created), which causes the resulting contributions of those full paths to be averaged as the final color of that pixel. This is the reason why I call my BDPT implementation as a naive one.<\/span><\/p>\n<h4>Scenes and Output Comparisons<\/h4>\n<p>For my term project, I have created 3 scene files. The details of those scenes are as follows:<\/p>\n<ol>\n<li><strong>cornellbox_bdpt_hidden_area_light.xml\u00a0<\/strong>has a hole at the furthermost part of the ceiling. An area light is put above the ceiling which illuminates the room indirectly by illuminating only the back wall of the scene.<\/li>\n<li><strong>cornellbox_bdpt_outside_area_light_window.xml <\/strong>scene has a little square hole (let&#8217;s call it a window) on the far side of the right wall, and an area light which illuminates the back wall from the window is put just behind the right wall. The other walls and objects in the room get illuminated indirectly from the illumination on the back wall.<\/li>\n<li><strong>cornellbox_bdpt_long_room_area_light.xml\u00a0<\/strong>scene is very similar to the path tracing scene of the <a href=\"http:\/\/kadircenk.com\/blog\/trace-the-ray-part-7-object-lights-and-path-tracing\/\" target=\"_blank\" rel=\"noopener\">previous path tracing assignment<\/a>, but this time the room is more deep and the area light on the ceiling is closer to the camera (so that the deeper side of the room could not get direct light, and becomes darker if BDPT is not used).<\/li>\n<\/ol>\n<p>Below I provide my basic ray tracing (with no path tracing) outputs, path tracing outputs, and BDPT outputs all together to enable the reader to make comparisons between them. I put the screen shots of my outputs visualized by\u00a0<strong>exrdisplay<\/strong> tool, as my tonemapping procedure is still buggy. At the end, I have put my tonemapped outputs, too. Also, my .exr files are available at the <strong>EXR Outputs<\/strong> section of this post. Please check the captions at the bottom of the images to get a detailed information.<\/p>\n<figure id=\"attachment_333\" aria-describedby=\"caption-attachment-333\" style=\"width: 758px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"333\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/hidden_nopath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath.png\" data-orig-size=\"758,760\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"hidden_nopath\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath.png\" class=\"wp-image-333 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath.png\" alt=\"\" width=\"758\" height=\"760\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath.png 758w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath-300x300.png 300w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_nopath-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-333\" class=\"wp-caption-text\">cornellbox_bdpt_hidden_area_light.xml &#8211; basic ray tracing &#8211; 625 MSAA<\/figcaption><\/figure>\n<figure id=\"attachment_334\" aria-describedby=\"caption-attachment-334\" style=\"width: 756px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"334\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/hidden_path\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path.png\" data-orig-size=\"756,759\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"hidden_path\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path.png\" class=\"wp-image-334 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path.png\" alt=\"\" width=\"756\" height=\"759\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path.png 756w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path-300x300.png 300w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_path-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-334\" class=\"wp-caption-text\">cornellbox_bdpt_hidden_area_light.xml &#8211; path tracing &#8211; 625 MSAA<\/figcaption><\/figure>\n<figure id=\"attachment_335\" aria-describedby=\"caption-attachment-335\" style=\"width: 759px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"335\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/hidden_bidir\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir.png\" data-orig-size=\"759,762\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"hidden_bidir\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir.png\" class=\"wp-image-335 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir.png\" alt=\"\" width=\"759\" height=\"762\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir.png 759w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir-300x300.png 300w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/hidden_bidir-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-335\" class=\"wp-caption-text\">cornellbox_bdpt_hidden_area_light.xml &#8211; BDPT tracing &#8211; 625 MSAA, Notice the black noise (shadowy noise) on the parts of the colored walls, the floor, and the ceiling closer to the camera in the Path Tracing scene above has been indirectly illuminated correctly using BDPT.<\/figcaption><\/figure>\n<figure id=\"attachment_340\" aria-describedby=\"caption-attachment-340\" style=\"width: 755px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"340\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/window_nopath-2\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1.png\" data-orig-size=\"755,760\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"window_nopath\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1.png\" class=\"wp-image-340 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1.png\" alt=\"\" width=\"755\" height=\"760\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1.png 755w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1-298x300.png 298w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_nopath-1-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-340\" class=\"wp-caption-text\">cornellbox_bdpt_outside_area_light_window.xml &#8211; basic ray tracing &#8211; 625 MSAA, As the light is behind the right wall, most of the pixels stays in shadow.<\/figcaption><\/figure>\n<figure id=\"attachment_341\" aria-describedby=\"caption-attachment-341\" style=\"width: 757px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"341\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/window_path\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path.png\" data-orig-size=\"757,761\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"window_path\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path.png\" class=\"wp-image-341 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path.png\" alt=\"\" width=\"757\" height=\"761\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path.png 757w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path-298x300.png 298w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_path-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-341\" class=\"wp-caption-text\">cornellbox_bdpt_outside_area_light_window.xml &#8211; path tracing &#8211; 625 MSAA<\/figcaption><\/figure>\n<figure id=\"attachment_342\" aria-describedby=\"caption-attachment-342\" style=\"width: 756px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"342\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/window_bidir\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir.png\" data-orig-size=\"756,759\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"window_bidir\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir.png\" class=\"wp-image-342 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir.png\" alt=\"\" width=\"756\" height=\"759\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir.png 756w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir-300x300.png 300w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/window_bidir-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-342\" class=\"wp-caption-text\">cornellbox_bdpt_outside_area_light_window.xml &#8211; BDPT &#8211; 625 MSAA, Notice that we got rid of many of the black noise on the path tracing version. The noise on the shadows of the spheres are also lessered. The BDPT version of this scene is still noisy as\u00a0 I did not use MIS during my implementation.<\/figcaption><\/figure>\n<figure id=\"attachment_336\" aria-describedby=\"caption-attachment-336\" style=\"width: 756px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"336\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/long_nopath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath.png\" data-orig-size=\"756,761\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"long_nopath\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath.png\" class=\"wp-image-336 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath.png\" alt=\"\" width=\"756\" height=\"761\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath.png 756w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath-298x300.png 298w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_nopath-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-336\" class=\"wp-caption-text\">cornellbox_bdpt_long_room_area_light.xml &#8211; basic ray tracing &#8211; 625 MSAA<\/figcaption><\/figure>\n<figure id=\"attachment_337\" aria-describedby=\"caption-attachment-337\" style=\"width: 757px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"337\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/long_path\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path.png\" data-orig-size=\"757,761\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"long_path\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path.png\" class=\"wp-image-337 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path.png\" alt=\"\" width=\"757\" height=\"761\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path.png 757w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path-298x300.png 298w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_path-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-337\" class=\"wp-caption-text\">cornellbox_bdpt_long_room_area_light.xml &#8211; path tracing &#8211; 625 MSAA<\/figcaption><\/figure>\n<figure id=\"attachment_338\" aria-describedby=\"caption-attachment-338\" style=\"width: 755px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"338\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/long_bidir\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir.png\" data-orig-size=\"755,759\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"long_bidir\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir.png\" class=\"wp-image-338 size-full\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir.png\" alt=\"\" width=\"755\" height=\"759\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir.png 755w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir-298x300.png 298w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/long_bidir-100x100.png 100w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><figcaption id=\"caption-attachment-338\" class=\"wp-caption-text\">cornellbox_bdpt_long_room_area_light.xml &#8211; BDPT &#8211; 625 MSAA, Notice the furthermost part of the room being indirectly illuminated.<\/figcaption><\/figure>\n<p>Here are the original tonemapped versions of my outputs:<\/p>\n<p><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"343\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_hidden_area_light_625msaanopath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_hidden_area_light_625msaaNOPATH\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH.png\" class=\"alignnone wp-image-343 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaaNOPATH-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"344\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_hidden_area_light_625msaa_path\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_hidden_area_light_625msaa_path\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path.png\" class=\"alignnone wp-image-344 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_path-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"345\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_hidden_area_light_625msaa_bidirpath\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath.png\" class=\"alignnone wp-image-345 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_hidden_area_light_625msaa_bidirpath-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"347\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_window625msaa_nopath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_window625msaa_nopath\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath.png\" class=\"alignnone wp-image-347 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaa_nopath-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"348\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_window625msaapath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_window625msaaPATH\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH.png\" class=\"alignnone wp-image-348 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATH-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"349\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_window625msaapathbidir\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_window625msaaPATHbidir\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir.png\" class=\"alignnone wp-image-349 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_window625msaaPATHbidir-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"350\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_long_room_area_light625msaanopath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_long_room_area_light625msaaNOPATH\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH.png\" class=\"alignnone wp-image-350 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaNOPATH-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"351\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_long_room_area_light625msaapath\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_long_room_area_light625msaaPATH\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH.png\" class=\"alignnone wp-image-351 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATH-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><a href=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"352\" data-permalink=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/cornellbox_bdpt_long_room_area_light625msaapathbidir\/\" data-orig-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir.png\" data-orig-size=\"750,600\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cornellbox_bdpt_long_room_area_light625msaaPATHbidir\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir.png\" class=\"alignnone wp-image-352 size-thumbnail\" src=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir-150x150.png\" alt=\"\" width=\"150\" height=\"150\" srcset=\"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir-150x150.png 150w, https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/cornellbox_bdpt_long_room_area_light625msaaPATHbidir-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<h4>EXR Outputs<\/h4>\n<p>You can visualize my .exr outputs by following the links below (move the handles of the slider to right step by step, while \u201cGamma 2.0\u201d option is selected):<\/p>\n<ul>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_hidden_area_light_625msaaNOPATH\" target=\"_blank\" rel=\"noopener\">hidden_light_basic<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_hidden_area_light_625msaa_path\" target=\"_blank\" rel=\"noopener\">hidden_light_path<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_hidden_area_light_625msaa_bidirpath\" target=\"_blank\" rel=\"noopener\">hidden_light_bdpt<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_long_room_area_light625msaaNOPATH\" target=\"_blank\" rel=\"noopener\">long_room_basic<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_long_room_area_light625msaaPATH\" target=\"_blank\" rel=\"noopener\">long_room_path<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_long_room_area_light625msaaPATHbidir\" target=\"_blank\" rel=\"noopener\">long_room_bdpt<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_window625msaa_nopath\" target=\"_blank\" rel=\"noopener\">room_window_basic<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_window625msaaPATH\" target=\"_blank\" rel=\"noopener\">room_window_path<\/a><\/li>\n<li><a href=\"http:\/\/kadircenk.com\/hdr\/exrvisualizer?exrname=cornellbox_bdpt_window625msaaPATHbidir\" target=\"_blank\" rel=\"noopener\">room_window_bdpt<\/a><\/li>\n<\/ul>\n<p>That&#8217;s the end of my term project post!<\/p>\n<p>Hope to see you!<\/p>\n<p>Happy tracing!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello trace-masters! In this post, I will first give some information on indirect illumination in ray tracing and bidirectional path tracing algorithm, and then I will write about how I have implemented my term project, a naive version of the Bidirectional Path Tracing (BDPT) algorithm. Moreover, I will provide a comparison of my BDPT outputs &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4],"tags":[],"class_list":["post-330","post","type-post","status-publish","format-standard","hentry","category-ray-tracing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk\" \/>\n<meta property=\"og:description\" content=\"Hello trace-masters! In this post, I will first give some information on indirect illumination in ray tracing and bidirectional path tracing algorithm, and then I will write about how I have implemented my term project, a naive version of the Bidirectional Path Tracing (BDPT) algorithm. Moreover, I will provide a comparison of my BDPT outputs &hellip; Continue reading &quot;Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/\" \/>\n<meta property=\"og:site_name\" content=\"kadircenk\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kadircenk3\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/kadircenk3\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-20T16:07:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-02-07T16:34:14+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png\" \/>\n<meta name=\"author\" content=\"kadircenk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/kadircenkalpay\" \/>\n<meta name=\"twitter:site\" content=\"@kadircenkalpay\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kadircenk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/\"},\"author\":{\"name\":\"kadircenk\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d9546d987c40be9d6ff61c6512b3a25\"},\"headline\":\"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)\",\"datePublished\":\"2018-06-20T16:07:42+00:00\",\"dateModified\":\"2019-02-07T16:34:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/\"},\"wordCount\":1423,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d9546d987c40be9d6ff61c6512b3a25\"},\"image\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/bdpt1.png\",\"articleSection\":[\"Ray Tracing\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/\",\"url\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/\",\"name\":\"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/bdpt1.png\",\"datePublished\":\"2018-06-20T16:07:42+00:00\",\"dateModified\":\"2019-02-07T16:34:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#primaryimage\",\"url\":\"http:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/bdpt1.png\",\"contentUrl\":\"http:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/06\\\/bdpt1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/trace-the-ray-part-8-project-bidirectional-path-tracing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/\",\"name\":\"kadircenk.com\",\"description\":\"Blog\",\"publisher\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d9546d987c40be9d6ff61c6512b3a25\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d9546d987c40be9d6ff61c6512b3a25\",\"name\":\"kadircenk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/ss.png\",\"url\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/ss.png\",\"contentUrl\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/ss.png\",\"width\":696,\"height\":696,\"caption\":\"kadircenk\"},\"logo\":{\"@id\":\"https:\\\/\\\/kadircenk.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/ss.png\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/kadircenk3\",\"https:\\\/\\\/www.instagram.com\\\/kadircenkalpay\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/kadir-cenk-alpay\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/kadircenkalpay\",\"https:\\\/\\\/www.youtube.com\\\/kadircenkalpay\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk","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":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/","og_locale":"en_US","og_type":"article","og_title":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk","og_description":"Hello trace-masters! In this post, I will first give some information on indirect illumination in ray tracing and bidirectional path tracing algorithm, and then I will write about how I have implemented my term project, a naive version of the Bidirectional Path Tracing (BDPT) algorithm. Moreover, I will provide a comparison of my BDPT outputs &hellip; Continue reading \"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)\"","og_url":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/","og_site_name":"kadircenk","article_publisher":"https:\/\/www.facebook.com\/kadircenk3","article_author":"https:\/\/www.facebook.com\/kadircenk3","article_published_time":"2018-06-20T16:07:42+00:00","article_modified_time":"2019-02-07T16:34:14+00:00","og_image":[{"url":"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png","type":"","width":"","height":""}],"author":"kadircenk","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/kadircenkalpay","twitter_site":"@kadircenkalpay","twitter_misc":{"Written by":"kadircenk","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#article","isPartOf":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/"},"author":{"name":"kadircenk","@id":"https:\/\/kadircenk.com\/blog\/#\/schema\/person\/8d9546d987c40be9d6ff61c6512b3a25"},"headline":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)","datePublished":"2018-06-20T16:07:42+00:00","dateModified":"2019-02-07T16:34:14+00:00","mainEntityOfPage":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/"},"wordCount":1423,"commentCount":0,"publisher":{"@id":"https:\/\/kadircenk.com\/blog\/#\/schema\/person\/8d9546d987c40be9d6ff61c6512b3a25"},"image":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#primaryimage"},"thumbnailUrl":"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png","articleSection":["Ray Tracing"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/","url":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/","name":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing) - kadircenk","isPartOf":{"@id":"https:\/\/kadircenk.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#primaryimage"},"image":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#primaryimage"},"thumbnailUrl":"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png","datePublished":"2018-06-20T16:07:42+00:00","dateModified":"2019-02-07T16:34:14+00:00","breadcrumb":{"@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#primaryimage","url":"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png","contentUrl":"http:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2018\/06\/bdpt1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/kadircenk.com\/blog\/trace-the-ray-part-8-project-bidirectional-path-tracing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kadircenk.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Trace the Ray \u2013 Part 8 (Project: Bidirectional Path Tracing)"}]},{"@type":"WebSite","@id":"https:\/\/kadircenk.com\/blog\/#website","url":"https:\/\/kadircenk.com\/blog\/","name":"kadircenk.com","description":"Blog","publisher":{"@id":"https:\/\/kadircenk.com\/blog\/#\/schema\/person\/8d9546d987c40be9d6ff61c6512b3a25"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kadircenk.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/kadircenk.com\/blog\/#\/schema\/person\/8d9546d987c40be9d6ff61c6512b3a25","name":"kadircenk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2023\/02\/ss.png","url":"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2023\/02\/ss.png","contentUrl":"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2023\/02\/ss.png","width":696,"height":696,"caption":"kadircenk"},"logo":{"@id":"https:\/\/kadircenk.com\/blog\/wp-content\/uploads\/2023\/02\/ss.png"},"sameAs":["https:\/\/www.facebook.com\/kadircenk3","https:\/\/www.instagram.com\/kadircenkalpay","https:\/\/www.linkedin.com\/in\/kadir-cenk-alpay","https:\/\/x.com\/https:\/\/twitter.com\/kadircenkalpay","https:\/\/www.youtube.com\/kadircenkalpay"]}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9NbhO-5k","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/posts\/330","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/comments?post=330"}],"version-history":[{"count":6,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/posts\/330\/revisions"}],"predecessor-version":[{"id":449,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/posts\/330\/revisions\/449"}],"wp:attachment":[{"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/media?parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/categories?post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kadircenk.com\/blog\/wp-json\/wp\/v2\/tags?post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}