Graphics Programming weekly - Issue 68 — January 13, 2019

I am running a small survey to be able to improve the series further this year.

If you have two minutes to spare, please fill out the survey https://goo.gl/forms/nNPzrRpiMERIgtBl2


This week also contains articles that have been published during my vacation since issue 67


Learning D3D12 from D3D11 - Part 1: Getting Started, Command Queues, and Fencing

  • start of series for programmers with D3D11 experience starting to learn D3D12
  • explains what command queues are, how they express different GPU execution timelines and how fences allow synchronization between CPU and GPU

WebGL + Rust: Basic Water Tutorial

  • explains how to render water using WebGL, Rust, and WebAssembly
  • water supports reflection and refraction
  • reflections are rendered using a reflection plane technique, that mirrors the world and clips fragments if they are below the water plane

Ice Shader – Hard Edges in Vertex Shader

  • shows how to use screen space derivatives to create hard edges on a mesh in the pixel shader
  • how to calculate greyscale from colors

An Explanation of the Rendering Equation

  • video explaining the rendering equation in an easy to understand and visual way

Programming tricks in Shadertoy / GLSL

  • list of common patterns for shadertoy programming
  • included are: normalizing screen coordinates, color management (hue, sRGB), line drawing, antialiasing, blending, vector math, and random value generation

Procedural Stochastic Textures by Tiling and Blending

  • preprint of the article to appear in GPU Zen 2 talking about the implementation details (C++ and GLSL)
  • replaces the 3D histogram transformation with three 1D histogram transformations
  • improves quality of the result under mipmapping and shows how to generate correct results with compressed texture formats


How to Start Learning Computer Graphics Programming

  • walkthrough of steps to learn graphics programming
  • recommends starting that beginners start with a raytracer/rasterizer from scratch before starting to use any graphics API
  • list of project ideas for beginners


16x AA font rendering using coverage masks, part III

  • explains how to rasterize the glyphs from a font into a texture. Providing the coverage information that is required by the technique discussed in part 1 and 2
  • includes code for the OpenGL compute shader
  • overview of typography terms and explain how to correctly position the glyphs to form the final text on the screen


Rasterization in One Weekend, Part III

  • presents what vertex attributes are and how they are interpolated to deal with perspective distortions correctly
  • uses this knowledge to interpolate normals and UV coordinates for the sponza model


A Primer On Efficient Rendering Algorithms & Clustered Shading

Part 1 of the article:

  • explains how classical forward/deferred pipelines work and how tiled and clustered algorithms can be used to extend these ideas
  • includes animations to show the concepts in a more visual way
  • presents strengths and weaknesses for each technique

Part 2 of the article:

  • presents the clustered forward shading implementation
  • how to subdivide the camera frustum into clusters and implement light culling
  • provides links to further information sources


The Rendering of Rise of the Tomb Raider

  • frame breakdown of the Rise of the Tomb Raider with D3D12 on PC
  • uses a light pre-pass architecture
  • lens flares don’t use a visibility query but instead use the depth buffer to calculate visibility
  • talks about shadow mapping, ambient occlusion, depth-aware upscaling, reflections, hair rendering, volumetrics, and tone mapping


Color Spread Post-Processing Effect Tutorial in Unity

  • explains how to apply an expanding color effect that converts the world from greyscale back to color as post-processing effect using Unity scriptable render pipeline
  • presents how to reconstruct world space position from the depth buffer

Containerized Shader Compilers

  • shows how to set up a Docker container image that is able to run shader compilers
  • supported are: DXC, FXC, GLSLang, AMD Radeon Graphics Analyzer, DXIL signing, SMOL/V and Vulkan SDK

If you are enjoying the series and getting value from it, please consider supporting this blog.

Support this blog