Category Archives: Engine Tech

What we’ve been working on lately.

We built a DirectX11 rendering backend for our engine, which is likely to be the default when running on Windows. Up until now we had been running on DirectX9, which made sense when we thought the game was going to be done a while ago. But these days, DX9 is getting pretty old and busted. […]

Also posted in Development | 22 Responses

HLSLParser

We just finished porting The Witness to D3D11. It took a little longer than I was hoping and one of the unexpected difficulties was getting our D3D9 HLSL shaders to work in D3D11. The D3D shader compiler provides a backward compatibility flag (D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY) that I was hoping would allow us to use our shaders ‘as […]

Posted in Engine Tech | 14 Responses

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 | 8 Responses

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 Responses

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 Responses

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 Responses

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 Responses

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 Responses

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 Responses

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 Responses