I’m Alive! (Or, the Game of Life in F#)

Things have been pretty busy lately. Over the summer, I got my first job working as a programmer. A little over a month ago, I began attending university (first year). While the experiences thus far have been excellent on both counts, there have been a couple unfortunate downsides:

  1. I’ve barely had any time to blog. Not such an issue, since my writing sucks anyway 🙂
  2. I’ve had absolutely no time to sit down and write a game (!!!)

Surely I can’t be that busy… can I? There’s another reason: I’ve become totally addicted to functional programming. Continue reading


Caching Sequences: Quick and Dirty

In F# we have this wonderful Seq.cache function which allows us to cache the results of a Seq object (also known as IEnumerable). Unfortunately, C# has no such function, and implementing it yourself usually involves implementing an extra class to hold the data.

Continue reading

Designing a Functional Rendering Pipeline

Well, it’s been ages since I last blogged anything. I feel ashamed… It’s been quite busy on my end. I’ve had plenty of projects to work on.

There’s a bright side to all this – I now have two more languages solidly under my belt! The first is C++, which is something I’ve only had really basic knowledge on up until now. I’ve been neglecting it mostly because it sucks, but it’s become a lot easier to stand now that the new version is finalized. Glory be to lambdas on high!

Continue reading

Screen Door Shadow Mapping

I developed this technique 2 or 3 years ago to solve one of the main issues with shadow mapping: transparency. The only other solution I had heard of at the time was Deep Shadow Maps, which didn’t seem like something that could be done in real time.

It’s a really, really simple idea. First, render the shadow map, drawing semi-transparent objects with screen door transparency. Apply some softening to the shadows, and voila. Of course, there are two major drawbacks.

  1. It’s still noisy, unless you use a massive filter.
  2. The only softening technique that works is PCF. VSM (and possible ESM) doesn’t work because the method naturally creates big depth discontinuities, and the conventional fix for light bleeding eliminates the transparent effect.