Cel-shading code, can it work in Jitter?

Apr 10, 2007 at 3:45pm

Cel-shading code, can it work in Jitter?

I’ve been reading about cel-shading, and came across this, complete with source code http://www.humus.ca/index.php?page=3D&ID=58

Would it be possible to implement code like that in Jitter by programming a shader somehow? I’m just now learning about rendering, but even if it takes me a year to learn I’d like to eventually get that effect.

I searched the archives, but only found one post about cel-shading saying that as of 2004 Jitter couldn’t handle vertex programs.

Any help/advice is appreciated!

#31283
Apr 10, 2007 at 4:05pm

Yes, but they’re cheating a little bit IMHO. They calculate the
outline on the CPU while this is typically done on the GPU. That
said, their shaders would be straightforwrd to put in a JXS file.

wes

On 4/10/07, Aaron Faulstich wrote:
>
> I’ve been reading about cel-shading, and came across this, complete with source code http://www.humus.ca/index.php?page=3D&ID=58
>
> Would it be possible to implement code like that in Jitter by programming a shader somehow? I’m just now learning about rendering, but even if it takes me a year to learn I’d like to eventually get that effect.
>
> I searched the archives, but only found one post about cel-shading saying that as of 2004 Jitter couldn’t handle vertex programs.
>
> Any help/advice is appreciated!
>

#101468
Apr 10, 2007 at 11:25pm

How can the CPU code for outlining be changed to run on the GPU?

#101469
Apr 11, 2007 at 3:25am

I should qualify my original statement a bit. If your geometry is
static as theirs is, it’s probably best to precalculate things as is
done in their C code. If you model is dynamic, this is going to be
costly. To do it on the GPU, you need some metric that defines and
edge. The two most widely used are depth discontinuities and normal
discontinuities. If the dot product of a normal with its neighbor is
close to or below zero, they are facing different directions and you
could say that an edge was located there and color it black to
indicate a line. Similarly, if the depth of a location is a
particular Z distance from its neighbor, it could also be considered
an edge.

Unfortunately, neighboring depth and normal information is not readily
available in either a vertex or fragment shader, so you have to supply
them via textures. For the normals, compress the range of values into
[0, 1] with the formula texval = (normval+1)/2 and unpack in the
shader. For depth values, you’ll have to snag the depth texture.

HTH,
wes

On 4/10/07, Aaron Faulstich wrote:
>
> How can the CPU code for outlining be changed to run on the GPU?
>

#101470
Apr 11, 2007 at 11:52pm

Thanks for your posts. I understand what you’re saying conceptually, but sadly I don’t know how to go about implementing it (I don’t even understand the shader code in the make-your-own-slab tutorial yet).

Hopefully when I have some more free time I can get a better grasp on all this.

#101471

You must be logged in to reply to this topic.