Category Archives: Engine Tech

Grassing it up…

Since The Witness takes place in the outdoors much of the time, we knew from early on that we were going to want to have grass of some kind. We added grass into the engine quite a long time ago (starting around December 2009?) and it’s gone through several iterations of what-seemed-to-make-sense-at-the-time. At this point, […]

Also posted in Development | 38 Comments

A glimpse into the terrain design process.

This is an experiment in writing up a blog post for a development task while I actually perform the task!  So right now, as I start writing this, I don’t know how it will end! I was talking to David Hellman about the game the other day, and he was asking when the island was […]

Also posted in Development | 21 Comments

Adventures in Fisheye Lenses

During the past couple of weeks, we have been doing some experiments for The Witness that involve pre-rendering a scene with a fisheye lens and then using that render during gameplay. If I were to say exactly what this is for, it would be a massive spoiler, so I’ll just say it’s for a kind […]

Also posted in Development | 16 Comments

Experiments in Texturing

Something like a year and a half ago, when I was starting to get serious about making The Witness, I was talking to Casey Muratori about 3D modeling and texturing. Braid was a 2D game; The Witness being 3D meant that it would be much more expensive and difficult to make, so I was doing […]

Also posted in Development | 19 Comments

Hemicube Rendering and Integration

One of our aims with our global illumination implementation was to keep it as simple as possible, while still obtaining good performance, and we hoped to achieve that by using the GPU. While the are several approaches to compute global illumination in the GPU, the most simple one that we could come up with was […]

Posted in Engine Tech | 15 Comments

Computing Alpha Mipmaps

A little problem that we had when we started to create trees and vegetation is that the standard mipmap generation algorithms produced surprisingly bad results on alpha tested textures. As the trees moved farther away from the camera, the leafs faded out becoming almost transparent. Here’s an example. The following tree looked OK close to […]

Posted in Engine Tech | 31 Comments

Kriging is cool.

In The Witness we decided that it’s a good idea to have a heightfield terrain making up the bulk of the island surface.  The advantages of this are in rendering performance and in ease of texturing (it is relatively easy, with one continuously-parameterized terrain block, to get rid of seams; if your terrain is a […]

Posted in Engine Tech | 31 Comments

Graphics Tech: Shadow Maps (part 2): Save 25% texture memory, and possibly much more.

In the previous part, I talked about my reasons for wanting to use Cascading Shadow Maps (one of the biggest: image stability), then said that we had implemented Michal Valient’s version of the algorithm, and mostly liked it, but wanted to reduce the memory usage. This time I’ll show how to reduce the memory usage by […]

Posted in Engine Tech | 27 Comments

Lightmap Parameterization

As explained by Jon in his previous post, we are using precomputed global illumination in The Witness, and one of my first tasks was to work on that system. I have developed some interesting technology to compute automatic paramaterizations, to formulate the lighting computations in a way that can be easily mapped to the GPU, […]

Posted in Engine Tech | 12 Comments

Graphics Tech: Lighting Comparison

It seems like time to post some images from the in-progress precoputed lighting tech that Ignacio is working on.  See here for a description of the basics behind what we are doing for lighting.  The lightmaps are now 16-bit and these shots use a simple exponential tone mapper. First, I’ve taken shots from 3 positions […]

Posted in Engine Tech | 10 Comments
  • Archives

  • Categories

  • Meta