"The survival of liberty in our land increasingly depends on the success of liberty in other lands. The best hope for peace in our world is the expansion of freedom in all the world."
- George W. Bush

Low-level Shader Optimization for Next-Gen and DX11
Saturday, March 29, 2014 | Permalink

Persson_LowlevelShaderOptimization.pptx (1.1 MB)
Persson_LowlevelShaderOptimization.pdf (5.3 MB)
This is the slide deck from my GDC 2014 talk titled "Low-level Shader Optimization for Next-Gen and DX11". This talk continues on my GDC 2013 talk "Low-Level Thinking in High-Level Shading Languages", showing low-level optimization tricks for DX11 level hardware, and GCN architecture in particular.

Populating A Massive Game World
Sunday, July 28, 2013 | Permalink

PopulatingAMassiveGameWorld.pptx (6.6 MB)
This is the slide deck from the Siggraph talk "Populating A Massive Game World" that my colleague Joel de Vahl and I presented at Siggraph 2013. It covers some of the issues related to filling a massive game world with meaningful content, as well as bringing it to life, as well as some rendering techniques used in Just Cause 2.

Practical Clustered Shading
Sunday, July 28, 2013 | Permalink

PracticalClusteredShading.ppt (8.5 MB)
This is the slide deck from my talk on Siggraph 2013 titled "Practical Clustered Shading". It covers some of the adaptations we did to clustered shading for a real game engine. The original technique was covered by Ola Olsson from Chalmers at the same session. His slides are available here.

A similar topic was previously covered on Nordic Game 2013. The slide deck here is the latest version, as presented on Siggraph.

Low-Level Thinking in High-Level Shading Languages
Wednesday, April 3, 2013 | Permalink

Persson_LowLevelThinking.pptx (1.0 MB)
Persson_LowLevelThinking.pdf (6.8 MB)
This is the slide deck from my GDC 2013 presentation titled "Low-Level Thinking in High-Level Shading Languages". This talk highlights how low-level thinking can help you write faster shader and shows examples of how high-level constructs map to GPU hardware instructions.

Graphics Gems for Games - Findings from Avalanche Studios
Monday, August 20, 2012 | Permalink

Persson_GraphicsGemsForGames.pptx (5.7 MB)
Persson_GraphicsGemsForGames.pdf (3.1 MB)
This is the slide deck from my presentation titled "Graphics Gems for Games - Findings from Avalanche Studios" at Siggraph 2012. It covers a set of unrelated but useful techniques, namely Particle trimming, Merge-instancing, Phone-wire Anti-Aliasing and Second-Depth Anti-Aliasing.

Creating Vast Game Worlds - Experiences from Avalanche Studios
Monday, August 20, 2012 | Permalink

Persson_CreatingVastGameWorlds.pptx (6.3 MB)
Persson_CreatingVastGameWorlds.pdf (3.9 MB)
This is the slide deck from my presentation titled "Creating Vast Game Worlds - Experiences from Avalanche Studios" at Siggraph 2012. It covers all sorts of issues you encounter when creating large game worlds, such as floating point precision issues, memory, optimizations, culling etc.


Fragment level phong illumination
Thursday, February 13, 2003 | Permalink

PhongIllumination.pdf (158 KB)
Download code
This article goes through the whole process of creating fragment level phong illumination lighting. Both the theory and implementation is explained in detail. Pixel and vertex shader version 2.0 in DirectX 9 is used for the implementation.

This article was also published in the Shader X II book.

Mandelbrot set rendering
Thursday, February 13, 2003 | Permalink

MandelbrotSetRendering.pdf (25 KB)
Download code
This article covers the topic of rendering the famous Mandelbrot set fractal through a pixel shader in DirectX9.

This article was also published in the Shader X II book.