Category Archives: Engine Tech

Irradiance Caching – Continued

… … Ignacio has posted the conclusion of his series on irradiance caching — at long last! — and released the source code. This code is a significant chunk of what makes lighting in The Witness as nice as it is.

Also posted in Development | 3 Comments

Casey’s Witness Wednesday on Interpolation

He’s put up another very informative blog post, leaving the specific topic of grass planting, venturing into more general territory regarding interpolation. And there’s a video, from which it is possible to learn a lot of this is a new subject. Here’s the blog post. Here’s the video:  

Also posted in Development | 7 Comments

Witness Friday post on Casey’s blog

Casey Muratori is back, with more details about planting grass when you really care about how good the results are.       Update: And here’s another post, complete with a video showing in detail how the grass planting works in the actual game.

Also posted in Development | 18 Comments

Working on The Witness, Parts 5 and 6.

Casey Muratori has made new postings about the work he has done on The Witness: Working on The Witness, Part 5 Working on The Witness, Part 6 In this one he talks about how to distribute grass. Legally. As well as the different colors of noise one might want to be familiar with in order […]

Also posted in Development | 11 Comments

Shadow Mapping Summary – Part 1

During the last several weeks I’ve been polishing and optimizing the shadowing system and I think that at this point it won’t undergo any more significant changes. In the process I’ve been reading a bit and looking up references and I’m appalled by how inaccessible is all the shadow mapping knowledge. For the most part […]

Posted in Engine Tech | 12 Comments

Mapping the Island’s Walkable Surfaces

walkmonster_1_comparison

Despite not even being finished, The Witness is already one of my all-time favorite games. I’ve been playing it since Jon started developing it several years ago, and I could not be more excited about its upcoming release. Unlike Jon’s previous game Braid, the asset and programming scale for The Witness is much further toward […]

Posted in Engine Tech | 49 Comments

Collecting Playtest Data

In The Witness, when progress in your game is saved, we also save a thumbnail that shows you where you were. This makes it easier to load a particular game later if you had multiple saves. Here is our current, very unpolished load screen: Right now, we save the thumbnail and the game data as […]

Also posted in Development | 25 Comments

scope(exit) in C++11

I really like the scope(exit) statements in D. They allow you to keep the cleanup code next to the initialization code making it much easier to maintain and understand. I wish we had them in C++. Turns out this can be implemented easily using some of the new C++ features. I’m not a big fan […]

Posted in Engine Tech | 56 Comments

Packaging Update

A while ago, I wrote a post about package sorting in order to minimize diffs when patching on Steam. I ended up running a straightforward test where we would change the game minimally and build consecutive patches. The patches turned out to be quite large, but upon investigation, it was clear there usually wasn’t a […]

Also posted in Development | 40 Comments

Seamless Cube Map Filtering

seamless_featured

Modern GPUs filter seamlessly across cube map faces. This feature is enabled automatically when using Direct3D 10 and 11 and in OpenGL when using the ARB_seamless_cube_map extension. However, it’s not exposed through Direct3D 9 and it’s just not available in any of the current generation consoles.

Posted in Engine Tech | 23 Comments