8. ● We don’t directly apply result of N●L to light component,
which produces smooth gradient
● Instead, we use that value to sample an array of values with
three sections that jump in value
● i.e. {0.3, 0.3, 0.5, 0.5, 0.5, 0.5, 0.7, 0.7, 0.7, 0.7}
● Additionally, if the R●Espec
is greater than some threshold, we
color the specular highlight. We found the ideal threshold to be
0.9
Toon Shading
9. ● Outlining done as a post-processing effect
● First, we convert pixel buffer to a grayscale image
● Then, we apply a Sobel Operator to the image to find the edges
● Finally, we color those edges black
Outlining
11. ● In addition to this basic toon shader and outliner, we also
implemented several other toon-style shaders that utilize
different texture mappings
Going Further
12. ● It is not always desirable to have every object in a scene at the
same level of detail.
● Often in cartoons, background objects don’t have the same
level of lighting detail as foreground objects
Detail Mapping
14. ● Texture below starts off
with a sharp gradation,
blurs as it moves down.
● We sample the texture
horizontally same as before
● We use the Z value of each
pixel to sample the texture
vertically.
15. ● We can also use the
normals to traverse texture
vertically
● In this version, detail fades
out at the edges rather than
based on depth
16.
17. ● We utilized textures to create a toon back light effect
● Gives backlight effect without actual lights
Backlight Mapping
18. ● Texture has darker region
for shadows and white strip
on bottom for backlight
● We use the normal of each
pixel to sample the texture
vertically
● Normals less in line with
the eye get the backlight
19. ● We can map opacity values to our model as well
Opacity Mapping
20.
21. Joe Wise, Divyanshu Bhardwaj, Renu Hiremath
Non-Photorealistic
Rendering Techniques