Thick Lines for Real-Time Cel Shading

I had this idea a while back, and I was really surprised to see it put to use in one of my favorite games, Jet Set Radio Future. I had thought a lot of people understood how this was done, but it seems everyone thinks it’s some special vertex shader. It is a great effect, as it looks like the line adapts to the profile of the object/character. A few people asked me to write a tutorial or FAQ, so this is it. I am kinda busy, but I will explain it very quickly as it’s very simple.

I created this bomb object in under 5 mins, at ~100 polys (final has ~200 polys) it’s simple enough that a PS2 could fill a screen with these (OK, maybe an Xbox). Now once you have the object, you want to create a shell around the object that will be the thickness of the line you want it encased in. You can simplify the shell object, as long as it is the distance away from the original you want the line thickness to be, you can even randomly alter the thickness for a rougher look.

Make the shell black, and flip it’s polygons so that they are facing inwards. This means that you only see the opposite side of the object, but not if the original object is in the way, paste the original object back inside the shell; it should look something like this:

Bomb Turntable [700K Divx 5.05]

It works rather well, no matter how you rotate/view the object, you have a line that conforms to the contour of the objects profile. Change your color surfs to high luminance, and add some spec, viola! It looks like a stylistic real-time game model! No vertex shaders were injured in the making of this tutorial.