- April 30th, Vulkan Developer Day in Montreal, hosted by Ubisoft
![](/img/posts/graphics-programming-weekly-35/2018-vulkan-developer-day-banner.jpg)
- UVs map into a gradient texture
- to change the colors the UVs are adjusted to point to other sections in gradient texture
![](/img/posts/graphics-programming-weekly-35/Recolouring_assets_with_lazy_unwrapping.png)
- 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
![](/img/posts/graphics-programming-weekly-35/The_Machinery_Shader_System.png)
- 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
![](/img/posts/graphics-programming-weekly-35/volta.png)
- MatCap texture contains lighting information for all camera space normals
- needs to be recalculated when camera direction changes
![](/img/posts/graphics-programming-weekly-35/Benefits_of_Image_Based_Lighting_on_Mobile_opening.png)
- 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
![](/img/posts/graphics-programming-weekly-35/post_processing.jpg)
- 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
![](/img/posts/graphics-programming-weekly-35/sat5.png)
- unity graphics team is looking to gather feedback to improve the roadmap
- 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
![](/img/posts/graphics-programming-weekly-35/rt-buffer-diagram-4.png)
- 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
![](/img/posts/graphics-programming-weekly-35/fp16.jpg)
- combination of ripples and streaking effect
- blending between the two effects based on surface orientation
- this post covers the implementation of the streaking effect
![](/img/posts/graphics-programming-weekly-35/rain.png)
- 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
![](/img/posts/graphics-programming-weekly-35/bc7_graph2_luma.png)
- discusses issue with the ispc implementation
- compression has quality problems with grayscale textures
![](/img/posts/graphics-programming-weekly-35/intel_hramp.png)
- survey of methods utilizing Monte Carlo for light transport in participating media
![](/img/posts/graphics-programming-weekly-35/volumetric.png)
- 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