Time for action - implementing a cartoon cow

The cartoon shading is a simple non-photorealistic effect which changes abruptly between tones. To archive a cartoon shader, we only have to transform the vertex to built-in gl_Position variables in the vertex shader, and then calculate and select a tone by using the normal and light direction in the fragment shader. After that, we may apply it to a loaded model, for instance, a pretty cow.

  1. Include the necessary headers:
    #include <osg/Program>
    #include <osgDB/ReadFile>
    #include <osgViewer/Viewer>
  2. We'd like to write the vertex shader source using strings. It passes a normal varying variable to the fragment shader, besides setting the gl_Position:
    static const char* vertSource = { "varying vec3 normal;\n" ...

Get OpenSceneGraph 3.0 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.