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 a bunch of thinking and seeking advice on the right way to do it.

I had been viewing a bunch of online portfolios of 3D modelers (and lamenting the quality of these portfolios) with an eye to hiring someone. Sometimes these portfolios are shown in steps: here’s the wireframe, here’s the filled-in geometry, here it is with lighting, and here is the final thing after it’s been textured. Casey pointed out something interesting about these that I knew was true as soon as he said it: most of these portfolios look worse than they need to because the texturing ruins them. When you run a radiosity algorithm on a scene full of unpainted geometry, it has an elegant, sophisticated, scent-of-the-real kind of thing going on; but it is very easy to spoil this sophistication through texturing. And, it seems, in video games we have developed a tradition of “bad” texturing, whatever that means: unsubtle, unrefined, or just plain ugly.

We’re on a low budget here, being an indie game; so not only was it an open question how to solve the Ugly Texturing problem, but we also needed to solve it with relatively little manpower.

I knew that, ultimately, we could just fall back on untextured geometry with lighting, if we had good precomputed lighting. That’s why we spent so much time and effort putting together our lighting system (as has been written about many times in this blog). The question was, would we stick to vertex colors on most objects, or would we use some kind of texturing?

Early on, we identified a texturing style that would work for human-sized objects and would gel with the gameplay of The Witness. The style prioritizes color, and tries not to break up the geometry of the object by imposing conflicting details through the texture. We did some objects like a 1-person boat in this style in order to refine it. [I’d like to include a screenshot of the boat here to illustrate it, but the boat is messed up right now, so I’ll just have to be vague.]

Because that style tries to use the texture map to accentuate the object, the contents of the texture must change with the local neighborhood of the object, which means you can’t use tiling textures very much. This means it would be very expensive to texture something like a big building, since you’d need unique texels everywhere.

Thankfully, the Western game development world has a tradition of developers being very open with their techniques and processes, and communicating with other developers very honestly about what is effective. (This is not something that one finds elsewhere in the world, and we should work hard to keep that spirit alive because it benefits everyone; but that’s a totally separate rant.) Here’s one good example of this kind of information exchange: at the GDC this year, some guys from Naughty Dog gave a talk on the art direction for Uncharted 2 (pdf link to their slides here.) Somewhere around page 220 of this very informative slideshow, they start talking about the blend shaders that they use in order to give more character to buildings and other geometry while still using tiling textures. The idea is that you interpolate between two (or more) textures with a blend function that fits the shape of your building nicely. You put some smarts into the interpolation so that it produces something that is visually interesting, rather than the blurry mess you would get via naive interpolation.

For The Witness it seemed like a good idea to use this kind of technique, but in a minimalist way, to create patterns that accentuate the shapes of buildings, and help tie them together visually, without stumbling into the realm of Ugly Texturing.

(There are a lot of reasons for the minimalism; one reason, though, is to provide clarity about what you can interact with, versus what is inert. Interactive things are colored in a way that makes them stand out in an obvious way. Think of it as something like what Mirror’s Edge did, but in a different way.)

We’ve started experimenting with these blend shaders; here are some images:

The upper-left shows a scene before we implemented the blend shader for buildings. In the upper-right, we are using a blend shader that blends the original texture with an alternate one that is a bit darker and rougher (but the difference is a bit subtle, by game standards at least). Below these images are the same scenes with precomputed lighting mixed in.

It is pretty clear to me that the lighting is actually the biggest ingredient in tying the scene together, but the blend shader is, I think, a good extra kick. It helps the area feel like there is a little bit of life and history to it (for example, the lighter-colored paths near the puzzle panels in the foreground, which imply that people have been walking that way). What you see here is not of shipping quality, but I see how we can reach shipping quality by iterating on this style and putting production-level effort into the assets.

Here’s a close-up of what the stairway looks like:

As you can see, the texture maps have some grain to them; from far away, the grain melts away and the structure is mostly a solid color, accented by lighting.

These experiments are still early yet but I find them very promising. The plan is that we will continue to hone the style and end up with something very special.


  1. It’s interesting to me to read this technical 3d stuff, thanks.
    Hoping The Witness comes out to be a great game.

  2. That looks great. I’ve always loved the feel of an illuminated “white box” world. Without textures you can see all the minute geometric details. Glad to see someone experimenting in that area.

  3. I noticed this sort of thing in earlier screen shots, but wasn’t exactly sure why it seemed so different from the norm. To me, the lightness of the texturing makes the style of the world feel very modern and clean, and the style of the game more similar to older photo-realistic adventure games that I played when I was a kid.

  4. I remember submitting some images to you back then. It’s nice to finally get some sort of response, some notion of your opinion. I would, however, be surprised if you were simply assuming that the many artists who displayed “traditionally bad” texturing were simply incapable of understanding whatever new direction you might prefer.

    It’s great that you did find an artist you like, with plenty of experience at that, and the models (even the rough block-ins) so far are looking pretty interesting. Posts like this leave me wanting more. Whatever special visuals you do end up with, I’m excited to see it, and the fact you write stuff like this knowing it’s a long way coming is a very good sign. Such reliable thoughtfulness is refreshing and inspiring.

  5. “This is not something that one finds elsewhere in the world… -Thankfully, the Western game development world has a tradition of developers being very open with their techniques and processes” I thought people in the east like sweden & japan are also open minded and friendly in discussing techniques and beliefs. why people wouldn’t! we should all look out for each other, since we are so young and don’t understand how our medium works yet. plus, whenever an indie succeeds we all succeed. why people wouldn’t chare their findings? how are we suppose to learn and teach to keep evolving. as always, the game is looking more and more beautiful! good luck experimenting all sorts of things. i think is a good idea focussing in architecture and function and their nuances than making things HD or HR or shiny. btw i discovered that youtube has labyrinth, and think that some of the followers of The Witness my find it interesting… so, i’m dropping a link k? http://www.youtube.com/watch?v=g3eU3WYws-I .it’s a classic, enjoy…

  6. Have you considered using screen space ambient occlusion? It could lend itself nicely to the style you’re going for as a large portion of the untextured work you see online is purely using an ambient occlusion lighting pass.
    Another thing to consider is if the sun goes down and you no longer receive those nice defining sunlight shadows, is the scene still going to be readable.

    Also thanks for the Naughty Dog GDC link. I recommend people purchase the audio that goes along with it as their art directors are simply amazing. (plus it’s only $4)

  7. We have thought about SSAO a little bit, but, I think, not very seriously. I personally don’t like it because it makes scenes that look really wrong. If The Witness had a lot of big dynamically animating, we’d probably want to think about SSAO as a way of doing things, but we are mostly concerned with lighting static environments that have a few togglable changes.

    Meanwhile, the precomputed lighting pass gives us stuff that is way more interesting and subtle than what SSAO produces. (For example, SSAO is not going to give you any lighting gradient in the middle of a big flat wall… but places like that are where we see most lighting gradients in real life!)

  8. Jon, I would be interested to hear you explain a little bit more how you define the “bad” texture styles. Just lazy and unrealistic/unfitting, or is it some special style? I agree that after lighting, texturing is one of the things that can make or break a scene the most. Can you think of some example where you thought traditional texturing was successful?

  9. Great shots,
    I like this ‘minimalist texturing’ approach.
    It reminds me of Team Fortress 2 style clean looks.

    Have you considered implementing decals ?
    They can help with unique details along with your blend shaders.

  10. Like asd, I would be interested to know what you mean by ‘a tradition of bad texturing’. You’re pretty vague in this post in a way that comes across as ‘Artists don’t know what their doing with texturing, it all looks crap!’ -I’m sure that is NOT you point, but it kind of reads that way ;)

    So are you talking about the technical limitations? artistic ability? a general style? Interesting post none the less, just not sure of the ‘problem’ you are solving :P

  11. Back when I was doing level design for a Source Engine mod I did a lot of the same thing. I wasn’t a texture artist, just layout and lighting, but while the level was still in my hands I’d use lighting as much as possible to carve depth out of the environment, even with very flat dev textures. I remember being disappointed on a few occasions when the level came back from the texturing guys, I actually preferred the cleanliness. Glad I’m not alone.

  12. things are looking more and more beautiful! you said that the structures them selfs could tell a story if they look like they have some sort of history. i personaly don’t careabout stories, at all! i’m not reading a book. hell, i don’t even like stories in movies! in video games is all about the gameplay, the interactions, the acts you perform. that is why i get mad when games take the controll away from me to show me something “cool” or “fun” like a but scene or a take down or a logo at the game start-up or a menu screen. this is something that i loved about braid, not even a “developed by” screen. i love the way you told… not a story, no b/c stories are not interesting to me, but you showed a feeling, information, actual meaningfull things, you know? so i’m very curious how you will communicate with us in The Witness. i thought i read something about… voice acting? or do you mean that the touch screen mazes will LITERALLY be the mode of communication of the game?

  13. من از ایران هستم !
    امیدوارم بتونید کامنتم رو بخونید …. !
    (braid) تا اونجایی که من اطلاع دارم قبل از این بازی ، بازی برید
    رو ساخته بودید که واقعا فوق العاده است و من نمیتونم اون رو تموم کنم چون خیلی مشکله !
    ولی میدونم که باید به بازیاتون ایمان داشت !!
    مشتاقانه منتظر بازی جدیدتون هستم !
    امیدوارم هر چه زودتر بازی کنم !
    با آروزی موفقیت برای سازنده های خلاق این بازی بزرگ !
    بای بای ……

  14. hey Jon, any idea if the talk that Naughty Dog gave for GDC was recorded anywhere ? the pdf is great, but more information would be fantastic.

  15. @Reginald: The video recording is available at the GDC Vault, try hooking up with anyone you know that attended last GDC.

    @a: what makes you think Sweden is an eastern country?

    @Jonathan Blow: your understanding of game development outside of the states is very narrow if you think it’s only the Western world that shares game dev ideas. I wonder what’s your definition of Western, but whatever it is – it’s too narrow to make your statement even remotely true.

  16. Sweden is certainly considered a Western country…

    As for my understanding of game development being narrow; I’ve been to a few Eastern countries, seen what happens there in terms of conferences, and seen what those guys choose to talk about at conferences when they come to the West. It appears to me that they have much more of a tradition of trying to keep trade secrets — Japan especially. A technical talk given by an American is, in general, totally different in style and attitude from a technical talk given by someone from Japan, and a large factor is the difference in terms of freedom of discussion and depth of information disclosed.

    Your mileage may vary of course.

  17. The recent game “Invincible Tiger: The Legend of Han Tao”:

    had a similar approach in that they used only a couple of dirtmap textures and the rest was done with vertex colours. I understand this was mainly done to save on level download size. Great results though.

  18. To me, the lighting on the stairway makes it worse. On the first image the stairs and the wall right next to it have about the same brightness to them. Once the lighting is added the stairs suddenly look much darker than the wall. So unless you changes something about the textures as well, that shouldn’t be IMHO.

  19. I’ll keep this in mind.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>