Table of Contents
Casey’s blog is also available via RSS.
Home
Quick links to the relevant parts of Casey’s home page.
API Design
Immediate-Mode Graphical User Interfaces (2005)
An old makeshift tech video I recorded introducing the concept of “IMGUI”  —  the Immediate-Mode Graphical User Interface.
Designing and Evaluating Reusable Components (2004)
An in-depth look at the five core principles of API design.
The Worst API Ever Made
A call-by-call look at context switch logging with the Event Tracing for Windows API.
Fixing Multi-monitor and Multi-window OpenGL on Windows
A simple proposal for a wgl extension that makes multi-monitor and multi-window output on Windows clean and simple.
Graphics Programming
Quaternions, Double-cover, and the Rest Pose Neighborhood (2006)
An old makeshift tech video I recorded about a special property of quaternions and how to use it to your advantage.
Implementing GJK (2006)
An old makeshift video I recorded about how to implement the GJK collision detection algorithm.
How to Open a Black Box (2007)
A look back at the development of normal mapping technology as a motivating example of why understanding concepts at a deep level is important for game engine programming.
Papers I Have Loved (2016)
A lecture from the 2016 Papers We Love conference about papers that proved inspirational to new work.
Stable Filtering  —  Part 1
How to make a filter that can be applied millions of times without producing artifacts.
Stable Filtering  —  Part 2
How to make a filter than can be implied an infinite number of times without producing artifacts and remain nearly indistinguishable from the original image.
Printing Presses Are Giant GPUs
The more I learn about printing presses, the more they seem like giant GPUs.
The Witness
Walk Monster
Mapping the walkable surfaces on the island of The Witness as a step toward bulletproofing the player movement code.
Finding and Fixing a Five-Second Stall
A strange pause in The Witness’s startup sequence leads to an investigation of Windows’ hotkey handling.
A Cliffside Cliffhanger
A little mystery about a rock that refused to move, that I thought I’d solved but didn’t really solve until Part 2.
How do you say “plane” in The Witness?
The exciting conclusion to the immovable rock mystery.
Visually pleasing distributions
An exploration of the grass system in The Witness leads to a discussion about what sorts of “random” distributions look pleasing to the human visual system.
The Color of Noise
What kinds of random distributions are good for the sorts of graphics work we do in game development?
The Nebraska Problem
The search for a “random” distribution with the most favorable qualities for ground cover.
A Brief Addendum on Staggered Concentric Intersection
Summaries and responses to emails received regarding the “Staggered Concentric Intersection” pattern.
Assorted grass system features
Brief discussions of some of the features of the grass system, and how they were implemented.
Interpolation
A video that introduces the basic concepts behind linear and bezier interpolation.
Semantic Compression
An introduction to the idea that code should be approached with a mindset towards compressing it semantically, rather than orienting it around objects.
Complexity and Granularity
An examination of two fundamental principles in effective programming.
Defining a Single Enumerant
An in-depth look at the decision-making process behind a small, simple piece of code.
Type Filtering
Implementing lister panel filtering by primary entity type.
Special Filters
Implementing lister panel filtering for arbitrary entity characteristics.
Displaying Groups Hierarchically
Making some simple changes to the lister panel code so that its display could show a hierarchy.
Lister Panel Demonstration
A brief video showing how the lister panel works in The Witness.
The Source Code
The complete source code to The Witness’s lister panel implementation.
Lister Panel Q&A
Questions and answers from last week’s post on The Witness’s lister panel.
Killing the Walk Monster (2018)
My BICFest 2018 lecture overview of the movement system I developed for The Witness.
Industry
The Next Twenty Years
Why the closed distribution model of Windows 8 should be changed for the sake of developers, consumers, and Microsoft itself.
Why Software Patents are Bad, Period.
An e-mail I wrote to a Stanford Law student a long time ago who asked me why programmers thought software patents were bad.
Miscellaneous
How close is WinDBG Preview to an everyday debugger?
A look at what Microsoft has been doing to improve the usability of WinDBG, and what’s still missing.
How to get clang++ to find link.exe
As of version 8.0.0, clang on Windows requires some gyrations if you want to tell it where link.exe is located.
Jittering Fonts in Photoshop with Prime Pussify
A Photoshop script for randomizing per-character font attributes on text layers.
Are register names still useful?
Why do CPUs still take instruction streams encoded with register names?
The Thirty-Million-Line Problem (2015)
A lecture from 2015 that argues for moving away from drivers and toward ISAs.
Chronological
Immediate-Mode Graphical User Interfaces (2005)
An old makeshift tech video I recorded introducing the concept of “IMGUI”  —  the Immediate-Mode Graphical User Interface.
Quaternions, Double-cover, and the Rest Pose Neighborhood (2006)
An old makeshift tech video I recorded about a special property of quaternions and how to use it to your advantage.
Implementing GJK (2006)
An old makeshift video I recorded about how to implement the GJK collision detection algorithm.
The Next Twenty Years
Why the closed distribution model of Windows 8 should be changed for the sake of developers, consumers, and Microsoft itself.
Walk Monster
Mapping the walkable surfaces on the island of The Witness as a step toward bulletproofing the player movement code.
Finding and Fixing a Five-Second Stall
A strange pause in The Witness’s startup sequence leads to an investigation of Windows’ hotkey handling.
A Cliffside Cliffhanger
A little mystery about a rock that refused to move, that I thought I’d solved but didn’t really solve until Part 2.
How do you say “plane” in The Witness?
The exciting conclusion to the immovable rock mystery.
Visually pleasing distributions
An exploration of the grass system in The Witness leads to a discussion about what sorts of “random” distributions look pleasing to the human visual system.
The Color of Noise
What kinds of random distributions are good for the sorts of graphics work we do in game development?
The Nebraska Problem
The search for a “random” distribution with the most favorable qualities for ground cover.
A Brief Addendum on Staggered Concentric Intersection
Summaries and responses to emails received regarding the “Staggered Concentric Intersection” pattern.
Assorted grass system features
Brief discussions of some of the features of the grass system, and how they were implemented.
Interpolation
A video that introduces the basic concepts behind linear and bezier interpolation.
Semantic Compression
An introduction to the idea that code should be approached with a mindset towards compressing it semantically, rather than orienting it around objects.
Complexity and Granularity
An examination of two fundamental principles in effective programming.
Defining a Single Enumerant
An in-depth look at the decision-making process behind a small, simple piece of code.
Type Filtering
Implementing lister panel filtering by primary entity type.
Special Filters
Implementing lister panel filtering for arbitrary entity characteristics.
Displaying Groups Hierarchically
Making some simple changes to the lister panel code so that its display could show a hierarchy.
Lister Panel Demonstration
A brief video showing how the lister panel works in The Witness.
The Source Code
The complete source code to The Witness’s lister panel implementation.
Lister Panel Q&A
Questions and answers from last week’s post on The Witness’s lister panel.
Designing and Evaluating Reusable Components (2004)
An in-depth look at the five core principles of API design.
The Worst API Ever Made
A call-by-call look at context switch logging with the Event Tracing for Windows API.
Fixing Multi-monitor and Multi-window OpenGL on Windows
A simple proposal for a wgl extension that makes multi-monitor and multi-window output on Windows clean and simple.
Why Software Patents are Bad, Period.
An e-mail I wrote to a Stanford Law student a long time ago who asked me why programmers thought software patents were bad.
Are register names still useful?
Why do CPUs still take instruction streams encoded with register names?
How to Open a Black Box (2007)
A look back at the development of normal mapping technology as a motivating example of why understanding concepts at a deep level is important for game engine programming.
Papers I Have Loved (2016)
A lecture from the 2016 Papers We Love conference about papers that proved inspirational to new work.
The Thirty-Million-Line Problem (2015)
A lecture from 2015 that argues for moving away from drivers and toward ISAs.
Killing the Walk Monster (2018)
My BICFest 2018 lecture overview of the movement system I developed for The Witness.
How close is WinDBG Preview to an everyday debugger?
A look at what Microsoft has been doing to improve the usability of WinDBG, and what’s still missing.
How to get clang++ to find link.exe
As of version 8.0.0, clang on Windows requires some gyrations if you want to tell it where link.exe is located.
Stable Filtering  —  Part 1
How to make a filter that can be applied millions of times without producing artifacts.
Stable Filtering  —  Part 2
How to make a filter than can be implied an infinite number of times without producing artifacts and remain nearly indistinguishable from the original image.
Jittering Fonts in Photoshop with Prime Pussify
A Photoshop script for randomizing per-character font attributes on text layers.
Printing Presses Are Giant GPUs
The more I learn about printing presses, the more they seem like giant GPUs.
For more information on my current projects, head over to computerenhance.com.