- shows the window system abstraction
- can be used to render to a window or into an offscreen render target
- how to allocate temporary data that is only required for the duration of the frame
![granite.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/granite.png&key=8f1dae77d912e0af2a093be907bbd74a15a82c5b5a1bf43ea9a7083d26c661c6)
- the article describes the process to locate a bug in Babylon.js PBR pipeline
- comparison against other rendering engines confirmed the problem
- caused by the difference between spherical polynomials and spherical harmonics
![tale_of_a_bug.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/tale_of_a_bug.jpg&key=1fc101b13998e985b8c97a6279fc63307628aa923c756c7eb80acdf449659466)
- shows the effect on PBR scene when no tone mapping is applied
- why tone mapping is required and explanation of exposure
- presents how to calculate luminance and the final average exposure required
![lottes_per_channel.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/lottes_per_channel.png&key=03765b68f4b61f75ab6bd3eced420b05f0716e3c1311579556606d153ba753e1)
- presents the process of tone mapping and how curves are used
- shows different kinds of tone mapping curves and their final result
- highlighting what different considerations need to be considered when deciding on a solution
![grid_diagram.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/grid_diagram.png&key=6dad5c4ad10c329707554e1d1f483bdceb3627c9e8d7685f60c5202c6c52daaa)
- new PIX version contains a preview of a new timing view
- will support larger capture durations, up to hours
- designed to better visualize a large amount of data collected
- preview because a large number of features are still missing
- team is looking for feedback
![pix_new_timing_capture_range_details_overview.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/pix_new_timing_capture_range_details_overview.png&key=2e98fda0c5390d8cdc98d2f7b2c78707881668ab75d26d9c91cc5ba7eda8e9a4)
- presents how render passes are expressed in the user-facing API
- shows how layout transition for external dependencies are handled
- separate logic for user-created, WSI images and transient images
- suggests that barriers should be treated at a higher level inside a frame graph architecture
![granite2.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/granite2.png&key=cdff360b4803c15a4c0e2a219f8150ff79f37d6ab3dff11b2dbda2983eb47c65)
- presents a new technique for a stochastic sampling of spherical area lights that is suitable for GPU implementations
- able to reduce noise from unoccluded areas significantly
- based on cutting the projected spherical cap into disks and sampling the disks instead
![MagnifiedProjected1spp.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/MagnifiedProjected1spp.png&key=841c301db4a218c8f48deddf636dffecd1af2fb6d3db199609613cd860b757f3)
- the second part of the volumetric cloud rendering series
- explains transmittance and phase functions
- 3D path visualization that presents how phase functions influence the way rays traverse the volume
![sun_light_100_depth-1.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/sun_light_100_depth-1.jpg&key=08d7d3797739392e859bea54af98ab899276c78fb0b97d90720549c8d2be50c4)
- an extended version of the GDC 2019 talk
- overview of AABB and BVH
- shows how to build a BVH using bottom up and top down building algorithms and update dynamically
- presenting different strategies
![DynamicBVH.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-82/DynamicBVH.png&key=f0bcec70571f610c10c75a98efb9a480227a5bff4aded152813579454cca600f)
Thanks to Giuseppe Modarelli for support of this series.
Would you like to see your name here too? Become a Patreon of this series.