While the world is moving ever closer to realistic shading which attempts to simulate the physical laws of light transport, there remains a number of applications of non-photorealistic rendering. With its help, we can apply emphasis on certain points on works of art, and we can also create a mechanical illustration that is easier to understand. Often, the techniques used for these purposes are not designed to run at real-time framerates, or they do not handle animation and camera movement very well. If performance is too low, we cannot exploit the features of the shader in an interactive manner. Similarly, if we cannot keep a visually coherent image between frames if an object is moving, we get a very disorienting picture and we will be unable to render motion pictures.
Our goal is to have a look at several problems of non-photorealistic rendering, and some of the most prominent approaches to these problems. If we find that these approaches do not meet our criteria of real-time performance, then we will strive to find a faster solution. Similarly, if the technique doesn’t give us a visually coherent and artifact free image upon animation, then we will try to find a method that does. We will be emphasizing techniques revolving around contour detection, for it is highly used in non-photorealistic rendering. In particular, we will implement a solution for the issue of cast shadow contours, and the shadow volume shadows the technique is dependent on. Lastly, we will attempt to create a shader that can coherently stylize the drawn contours, and a technique for hatching.
The implemntations of all these techniques will be combined in an application, which will have the visual style of architectural sketches, and whose purpose is to show us the performance of the whole system.