- this in-depth document (26 pages) covers how real-world measurement is used to achieve correct lighting in call of duty
- explanation of camera concepts
- getting relative EV differences between light and shadowed areas is more important than having absolute correct values
- how having consistent measurements between the real world and in-game allowed numerous issues to be discovered and fixed
- the exposure handling required for the sizeable dynamic range of the scene
- how to capture accurate HDR photographs, albedo textures, and specular gloss
![Real_World_Measurements_for_Call_of_Duty_Advanced_Warfare.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/Real_World_Measurements_for_Call_of_Duty_Advanced_Warfare.png&key=c903398e1acc990d86eed9693b512cb6b775e116364f16a3dc4cf8b05ed058be)
- an in-depth overview of color, color spaces, and color transformations
- discussion of HDR standards
- ACES pipeline overview
- implementation of HDR pipeline covering
- tone curve, display mapping, UI rendering
- universal CLUT and color grading
![HDR_in_Call_of_Duty.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/HDR_in_Call_of_Duty.png&key=21002f308735184be1cdfbfac8d67dc9d3e86741a3dd9a22760ae9d55cdc94a4)
- look at solution developed by Imageworks compensates for the energy loss in a single bounce BRDF model
- improvements to the model
![spi_fixed_vs_heitz.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/spi_fixed_vs_heitz.png&key=da1ea668181e431cfd94b058051c2d09d4b06370d49b643b5476fc5b814aa2e1)
- proposal of how to group vulkan resources by usage type
- designed for coloring in the VulkanMemoryAllocator
![VmaDumpVis_ColorWheel.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/VmaDumpVis_ColorWheel.png&key=20e6a13fa32026abffb3809d00ba2f12d627a80efee053be2dd38537e56fe452)
- Apple will start to deprecate OpenGL with macOS 10.14 and OpenGL ES with iOS 12
- developers should be using Metal instead
- how to generate command buffers in parallel on the CPU
- metal can analyze data dependencies to insert GPU parallelization automatically
- explicit control is supported but requires explicit opt-in
- how to build a GPU driven rendering pipeline using indirect command buffers and argument buffers
- look at image blocks, programmable blending, tile shading, persistent thread group memory, custom multi-sample color resolve
- lessons learned from bringing Fortnite: Battle Royale to iOS
![metal_gpu_pipeline.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/metal_gpu_pipeline.png&key=4f7350b7aa1a946e1b4e095e3e3112fd0022334a6b00706199ce69a470596329)
- twitter thread with advice how to learn more advanced graphics programming topics
- a tutorial that explains how to clip a polygon based on a list of lines in a pixel shader
![polygon_clip.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/polygon_clip.png&key=bb31ddde971a48ee73ba70619354a0e345b45605368809e8e544648f2a9d57b7)
- derivation of a ray function that implements the effects of a thin lens on rays
![sketch.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/sketch.png&key=1d5eaf9b42e7e820b3451685546d6cdb408575eac74f4ffa296a5b79f5fd4188)
- looks at different file formats and discusses the difference between formats aimed at the interchange of information or consumption only
- formats covered: gltf, fbx, alembic, USD,
- a brief look at application and engine support
- a sample that shows how to use the VK_KHR_multiview Vulkan extension
![multiview.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-42/multiview.png&key=d2fa6ab5b7efedafe1098aa91dd8d499b9f0f478e1d22aac85f09bffbd59140c)