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. |
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. |
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. |
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. |
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. |
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. |