Nathan Reed

Blog Stuff I’ve Made Talks About Me
All Posts

Quadrilateral Interpolation, Part 2

May 18, 2017 · Graphics, GPU, Math · Comments

It’s been quite a while since the first entry in this series! I apologize for the long delay—at the time, I’d intended to write at least one more entry, but I couldn’t get the math to work and lost interest. However, I recently had occasion to revisit this topic, and this time was able to make progress.

In this article, I’ll cover bilinear interpolation on quadrilaterals. Unlike the projective interpolation covered in Part 1, this method will allow us to maintain regular UV spacing along all four of the quad’s edges, regardless of its shape; but we’ll see that to achieve this, we’ll have to accept a different kind of distortion to the texture.

Read more...


A Programmer’s Introduction to Unicode

March 3, 2017 · Coding · Comments

Unicode! 🅤🅝🅘🅒🅞🅓🅔‽ 🇺‌🇳‌🇮‌🇨‌🇴‌🇩‌🇪! 😄 The very name strikes fear and awe into the hearts of programmers worldwide. We all know we ought to “support Unicode” in our software (whatever that means—like using wchar_t for all the strings, right?). But Unicode can be abstruse, and diving into the thousand-page Unicode Standard plus its dozens of supplementary annexes, reports, and notes can be more than a little intimidating. I don’t blame programmers for still finding the whole thing mysterious, even 30 years after Unicode’s inception.

A few months ago, I got interested in Unicode and decided to spend some time learning more about it in detail. In this article, I’ll give an introduction to it from a programmer’s point of view.

Read more...


The Many Meanings of “Shader”

February 12, 2017 · Graphics, GPU · Comments

When the same word is used to mean slightly different things, there’s always a chance of creating confusion—and the word “shader” is a bit overloaded in computer graphics. Between engineers, artists, and DCC tools’ terminology, there are at least four different meanings of “shader” out there.

Read more...


Tessellation Modes Quick Reference

December 30, 2016 · Coding, GPU, Graphics · Comments

One difficulty with GPU hardware tessellation is the complexity of programming it. Tessellation offers a number of modes and options; it’s hard to remember which things do what, and how all the pieces fit together. I use tessellation just infrequently enough that I’ve always completely forgotten this stuff since the last time I used it, and I’m getting sick of looking it up and/or figuring it out by trial and error every time. So here’s a quick-reference post for how it all works!

Read more...


little-py-site

October 12, 2016 · Comments

View on GitHub

Welcome back, readers! You may have noticed that the site looks a bit different now. Over the last few weeks I’ve redesigned the theme, making it more modern and mobile-friendly, and also converted it from Wordpress to a static site generator, which should make it faster in general as well as hopefully more resilient to the occasional slashdotting. 😅

I ended up building my own little static site generator in Python, and I’ve put it up on GitHub in case it’s helpful as a starting point for anyone else’s efforts.

Read more...


Star Trek: TNG Theme Reorchestration

August 15, 2016 · Comments

Screenshot of score for TNG theme

Download (2.5 MB)

In June 2016, game developer Sophie Houlden held a month-long game jam inspired by Star Trek. Although my initial plan was to actually make a game, after one thing and another I ended up radically de-scoping and I decided instead to re-arrange the Next Generation theme music, as an exercise in orchestral writing. Working from a piano score and my nostalgia for the original, I turned out this take on the classic.

The show’s original version (one of them—there are a few slightly different variants used in different seasons) can be found on YouTube here.


EEVEE.WAD Doom Map

February 18, 2016 · Comments

Screenshot of EEVEE.WAD

Download (12 MB)

Like many people, my first foray into game development was modding. In the early 2000s I spent a lot of time making maps for Doom, and later Half-Life. But I hadn’t touched it for about ten years, until this winter, when Eevee posted a series of blog articles on Doom mapping, and I was inspired to take up the editor again. This map was the result.

I spent about a month on this (my initial plan turned out to take a lot longer to execute than I thought—big surprise), and I’m pretty happy with the result. It was neat to come back to Doom after this time and see how my perspective had changed. The tools available today are a lot better than what I remember, and I’m way smarter about level design than I was ten years ago. Still, by the end of making this, I was starting to get frustrated with Doom’s limitations, and I’m definitely all mapped out for awhile.

I’ve packaged up the map with a copy of the ZDoom engine and the Freedoom asset pack (since the original Doom textures, sprites, sounds, etc. are all under copyright and can’t be redistributed). If you have a copy of Doom 2, drop your doom2.wad file in the directory and use that; otherwise, you can play it with the Freedoom assets.


SIGGRAPH 2015: NVIDIA GameWorks VR

August 17, 2015 · Comments

GameWorks VR logo

Slides: pptx, 10.6 MB or pdf, 7.9 MB (both include speaker notes)

GameWorks VR is a suite of technologies I helped to build at NVIDIA in 2015–2016. It’s an SDK for VR game, engine, and headset developers, aimed at cutting down graphics latency and accelerating stereo rendering on NVIDIA GPUs. In this talk, I explain the features of this SDK, including VR SLI, multi-resolution rendering, context priorities and direct mode.


Depth Precision Visualized

July 3, 2015 · Graphics, GPU, Math · Comments

Depth precision is a pain in the ass that every graphics programmer has to struggle with sooner or later. Many articles and papers have been written on the topic, and a variety of different depth buffer formats and setups are found across different games, engines, and devices.

Because of the way it interacts with perspective projection, GPU hardware depth mapping is a little recondite and studying the equations may not make things immediately obvious. To get an intuition for how it works, it’s helpful to draw some pictures.

Read more...


Outdoor Computing

June 18, 2015 · Comments

As I write this, I’m sitting on my patio with my laptop. It’s a lovely California summer afternoon, sunny with a cool breeze; I’ve got a glass of iced tea at my side, and nature all around. What could be a better environment for getting some coding done or catching up on research papers? Working outdoors is soothing and relaxing, conducive to concentration and creativity. There’s just one problem: I can hardly see the words I’m typing!

Read more...

All Posts

Subscribe

  • Follow in Feedly Feedly
  • RSS RSS

Recent Posts

  • Quadrilateral Interpolation, Part 2
  • A Programmer’s Introduction to Unicode
  • The Many Meanings of “Shader”
  • Tessellation Modes Quick Reference
  • little-py-site
  • Star Trek: TNG Theme Reorchestration
  • All Posts

Categories

  • Graphics (21)
  • Coding (18)
  • Math (13)
  • GPU (12)
  • Physics (6)
  • Eye Candy (4)

© 2007–2017 by Nathan Reed. Licensed CC-BY-4.0.