- April 30th, Vulkan Developer Day in Montreal, hosted by Ubisoft
![2018-vulkan-developer-day-banner.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/2018-vulkan-developer-day-banner.jpg&key=45aedf188ff04a39e7f84b9b7009d87b3310d0fb3cbb3e00f1b22547ea7bbd27)
- UVs map into a gradient texture
- to change the colors the UVs are adjusted to point to other sections in gradient texture
![Recolouring_assets_with_lazy_unwrapping.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/Recolouring_assets_with_lazy_unwrapping.png&key=1ac03b742fd2d77187c49fafa2cf145905069cdc332c6796e081295f805aa6b2)
- overview of the shader authoring format
- shader input parameters are defined without thinking about how they are bound
- passing data between shader stages is abstracted
- giving the system flexibility to pack as required
![The_Machinery_Shader_System.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/The_Machinery_Shader_System.png&key=dd0409475a26a9c5fa298cb59168dfebd0e0355531dc76fbe5a2dae934116669)
- microarchitectural details of the NVIDIA Volta architecture
- registers are divided into two 64 bit banks
- reduction of bank conflicts with register remapping can improve performance by 15%
- shorter latency for shared memory atomics
![volta.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/volta.png&key=0c49ff3dd8bc2b898a6b8c2984144c5f3b26dc36e5f6a5a81b8ec995c8f68c3b)
- MatCap texture contains lighting information for all camera space normals
- needs to be recalculated when camera direction changes
![Benefits_of_Image_Based_Lighting_on_Mobile_opening.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/Benefits_of_Image_Based_Lighting_on_Mobile_opening.png&key=cc452f7503cb20670d2da7b21128a02ca59f2f39471c925f45302d02f9c9a169)
- uses a texture based and camera facing quad approach instead of a post-processing bloom
- lighting for terrain rendered into a low-res light map, sampled per-fragment
- terrain is rendered at 720p, up-scaled to 1080p
![post_processing.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/post_processing.jpg&key=fa092196564771d3101ef2ad6580620c0e099f45bd93b0b1fdd0ff7f5f20bbf0)
- algorithm to sum regions from arrays or grids in constant time
- need larger storage format, increase depends on largest range that needs to be summed
- compatible with bilinear filtering for sub-pixel values
![sat5.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/sat5.png&key=41eafdbbf8383088851e559a15cdf33d9a64d08b64f5882c432aee9b5a411ae3)
- unity graphics team is looking to gather feedback to improve the roadmap
- performance numbers for all implementations with latest changes
- current approach recursively processes a single ray until it terminates
- new approach calculates each step for all rays in seperate passes
- memory read seems to be limiting factor, shows a few optimizations for that
![rt-buffer-diagram-4.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/rt-buffer-diagram-4.png&key=e977ed1f58323f88d4d4b44f2f81c909c0ff9a901474bfcf7c697366cb265abf)
- available with AMD vega architecture
- pack two FP16 into FP32 register
- reduce ALU instructions count, reduce VGPR usage
- how to detect FP16 code generation in FXC disassembly and GCN ISA output
- discussion of pitfalls and common use-cases
- how to deal with FP16 constants
![fp16.jpg](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/fp16.jpg&key=657bc3e852b60e3dd5f888ee91edf9c6b31a8c608b05a722d9a1e96db85ca670)
- combination of ripples and streaking effect
- blending between the two effects based on surface orientation
- this post covers the implementation of the streaking effect
![rain.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/rain.png&key=90936b80e271cea7b2c1cb1626a7caef8cacb727e21cf7e903787eb9c23e9296)
- many BC7 encoders compress all channels equally
- for color textures, errors in red and blue are less noticeable
- YCbCr color space allows better compression by reducing the number of bits used for chroma
![bc7_graph2_luma.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/bc7_graph2_luma.png&key=e377281eedf1a29ffe3b8ae1752ab9fd951ca9ce60f9b4d3a562bb12c20a1928)
- discusses issue with the ispc implementation
- compression has quality problems with grayscale textures
![intel_hramp.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/intel_hramp.png&key=e34f5643aba75a5a80a235582089e557ba48071324d6f8cdad4259ff2b3bd4bb)
- survey of methods utilizing Monte Carlo for light transport in participating media
![volumetric.png](https://www.jendrikillner.com/img/posts/graphics-programming-weekly-35/volumetric.png&key=04935e56fa07985907d9615d9666c6759a6a2b5ac7629477d285851c7be48f25)
- list of resources for beginners aimed at shader toy like graphics programming
- A C++14/C++17 header-only library for simple, efficient, and robust serialization/deserialization of glTF 2.0