Missed the content for March? Don’t worry. The summary is now availbale on my patreon: https://www.patreon.com/jendrikillner
- part 3 of tutorial series in building a path tracer in Unity
- shows how to trace a ray against a triangle and extends this by integration of Unity mesh interactions from the scene
![bunny-reflecting.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/bunny-reflecting.jpg&key=c862510b7d6a7875ab6c244f398479c2d518609911c168f88222a4f48de053f0)
- new Nsight graphics release adds improved DXR support, D3D12 fence visualization and Vulkan support for the range profiler
![dxr_debug.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/dxr_debug.png&key=cde1aee3ab4e8b62e380c096e134f6c50dc65b76ac0eed7a1125c68d4473fa97)
- whitepaper presenting the Autodesk uber surface shader based on the Arnold shading model
- based on ten components that are layered and mixed hierarchical to form the final surface appearance
- defines a “preview” model that simplifies the shading model for real-time use
- shows the effect of the individual components and exposed parameters
- partial Open Shading Language implementation is provided
![surface_layers.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/surface_layers.png&key=201705b597b9c8d037fc260cb4a6bc76fa438c5838392a5ccf1d7adf04caf46c)
- presents how to render maps using WebGL
- shows how to convert color maps to elevation
- generate normal maps from a height map
- apply soft shadows, ambient lighting and combine with color map information
![good-tiled.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/good-tiled.png&key=2d373bda0f7f4bb82debf59afb58261d83f739e48f92d0c60a5058581f22b9e0)
- collection of links to presentations from GDC 2019
![gdc_logo.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/gdc_logo.png&key=b68d1e2e73c314cee95e96b228f9b17a13942c74f12110510cf242a057a5dbb2)
- collection of resources aimed at helping beginners get started with graphics programming
- overview of Variable Rate Shading which is starting to become part of the D3D12 API
- will have a two-tier hardware support level
- tier 1: per draw shading rate changes
- tier 2: can vary shading rate within a draw, with a screenspace image or per-primitive
![VRS-Tier-2-ssimage.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/VRS-Tier-2-ssimage.png&key=f50252d9a2090510b868f9c1728efb1ad3ac50c84381160feb9d2756fb9e061a)
- next Windows update will add support for library subobjects
- these allow configuring raytracing pipeline state from HLSL, removing the need for boilerplate C++ code
![d3d12.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/d3d12.jpg&key=74647cf227281eb9e9da64c698e07d6b73dddba950638382b40c4a478f428681)
- the author presents his thoughts on the current state of raytracing in games
- where it can bring an advantage, weaknesses and the need for hybrid solutions
- how it might influence art direction
![image-2-1.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/image-2-1.png&key=90d4ffff78c8254a9b104dd55d0c3360710df1ae396e7bdc5719a18b9002f673)
- explores a stable filter further
- presents a new test that can be used to validate the filter quality better
- performs experiments to find a filter that is stable and introduces less blurring than the filter discussed in part 1
![stable_filtering.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/stable_filtering.png&key=a6a92b8cbf7cebdc89e3d7902f08c3b922f1e2189d0fc74c5cfb88cb55250887)
- ARM released a best practice guide for Vulkan
- consists of runnable samples that show best-practices and shows common performance pitfalls
- on-screen information visualizes the performance impact of different methods
![Vulkan-Best-Practices.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/Vulkan-Best-Practices.jpg&key=7b63050a22607f4e73a0866205db8692e4b0a0d98575e7124eda06f124be5069)
- look at the disassembly for parts of the skydome, sun, and stars shader from The Witcher
![sun_an_sky_witcher.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/sun_an_sky_witcher.jpg&key=fd5b0de3e5060bf61d9f06e5ce1a9ce0266bad710b1f5a06020a0da04b608e85)
- covers overview of color theory, color spaces, and encoding
- presents what problems FreeSync 2 solves and what guidelines it requires hardware manufacturers to follow
![fs2_explanation.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/fs2_explanation.jpg&key=4e4473edaf92225ab8aee1a3a1c2c1eb507de8d93e022c4c4fed19408727878b)
- list of best practices for ray tracing
- how to manage the acceleration structure construction and building efficiently
- how to manage pipeline objects, shaders, and resources
- denoisers and memory budget
![raytracing.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/raytracing.png&key=027671da0805359a8effbe820f188c62e768018a20160fef3bd865ecd3d66573)
- occupancy graph is now supported on Turing GPUs too
- Variable Rate Shading is supported
![occupancy.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/occupancy.png&key=55460aace0418d39b6a51c856c0efd0886ebce456f5c439de165fe5876675073)
- a small article explaining the difference in the viewport coordinate system when using Vulkan compared to OpenGL
- shows how to flip the viewport to match OpenGL convention
![example_vk.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/example_vk.png&key=640840b527261f9d5206f0c076be3add7ad23f7a0b20881ffe61773ea9963387)
- presents how to precalculate an energy preserving microfacet BRDF with a diffuse-like lobe
![ggx.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/ggx.png&key=1bd400edab1b6ebbe71253a0bf6949f7007f6c47f6a0c0afbd3f9cefdec97b11)
- presents the authors’ views on “do”’s “do not”’s for the future use of raytracing in games
- how RTX gives new opportunities and also challenges
- performance vs. quality tradeoffs will still be required, and raytracing will not make this simpler
![Call-of-Duty-Infinite-Warfare.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/Call-of-Duty-Infinite-Warfare.jpg&key=97b705cfed1a77f34e81d242e457765a854f709239eeb385266c7815c1e4bdd7)
- unreal tech talks from GDC 2019 are available
![unreal_gdc_2019.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-78/unreal_gdc_2019.jpg&key=a3165bcdd923a063600e7cbda966ff551cf91b1186f437db264b2b6b39a065f8)
Thanks to Warren Moore for support of this series.
You would like to see your name here too? Become a Patreon of this series.