Non-Photorealistic Rendering

I think NPR is pretty cool. I did not use to think that, but I have realized that you can get much more interesting pictures using this kind of technique than with just plain Phong. Of course, this is only provided artistic rendering or simply visualization rather than realism is the goal. It is also surprisingly easy to implement and a lot of fun to play with. Below some examples where I have used

  • Edge detection on a depth buffer (actually xyz buffer)
  • Edge detection on a normal buffer
  • Gooch shading
  • Toon shading
  • Image based rendering of isophotes

  • The edge filter is a simple Laplace operator

    The Pictures

    The images are forced to a width of 512. Open the image to see it full size. All images use both edge filters but otherwise the techniques vary.

    The eagle is shaded with a two tone toon shader plus black shading where the normal and view vectors are nearly perpendicular. I hope you will agree that it looks quite ominuous.

    The gargoyle looks even more scary. Edges have been exaggerated to make it look more rough.

    The hand below with Gooch and then Phong. This really shows that the more or less constant luminosity of Gooch makes it much easier to "see" the shape.

    Now a series of heads. First with Gooch, toon, and Phong. The results are unsurprising. Then with isophote rendering. Isophotes are great shape cues, but it is nearly impossible with an image space technique to make them even width. Probably object space methods are better when it comes to isophotes. Just not as easy to implement. The final image shows the edge filters exaggerated. That gives a wireframe like effect that does not serve any purpose but which you may consider cool.

    I am grateful to the nice people who are kind enough to provide these various models.
    Andreas Bærentzen
    jab 'at'
    November 2005