We will be implementing a real-time watercolor-esque NPR shader on top of the project 4 codebase. This will be done using layers of watercolor shaders to approximate various effects of the physical medium, including color bleeding, edge darkening, paper textures, and pigment granulation.
We want to implement a real-time watercolor-esque shader because watercolor is a difficult medium to replicate due to the complex interactions between the pigment, water, and paper texture. We want to explore shaders beyond that of the basic Phong shader in project 4, to gain a stronger understanding of shaders as a whole and implement an artistic shader rather than just realistic shaders. Implementing a watercolor shader is important because it is difficult to properly emulate the appearance of watercolors computationally--it requires simulating the complex effects of how pigments spread on paper. Watercolor shaders, especially real-time, are challenging because it is difficult to appear convincing without a decent amount of post-processing and composited effects. In this project, we will try to solve the problem of creating a convincing real-time watercolor shader to 3D objects by approximating the effects of edge darkening, granulation, paper textures, and pigment granulation with several intensity calculations in order to recreate the look of wet-on-wet and wet-on-dry watercolor techniques.
Following Luft and Deussen 2006, we plan to implement the effects of watercolor glazing,
shape and flow of pigment, edge darkening, and pigment granulation. Glazing is the result
of layering thin washes of pigment to get a transparent and blended look that is very
distinctive of watercolor. This along with simulating the shape of the layers by
simplifying and abstracting the photorealistic model to create a more blurred image
is the basis of the watercolor effect. Furthermore, edge darkening, which is caused by
the flow of pigment towards the edge of a patch of wet pigment as it is drying, will
be implemented using a Gaussian filter. Finally, we will account for pigment granulation,
the variations in pigment intensity caused by the texture of the paper. We will create
this effect by modulating the color according to an intensity texture that imitates the
paper structure, as described by Luft and Deussen. These characteristics are the most
significant effects to produce a watercolor-like image.
On top of these watercolor effects, we will composite a Phong based model. Several
layers include the diffuse color layer, the specular highlights, and the shadows,
each separately calculated with the watercolor shader. This model, along with an
additional layer for shadows, will emulate the appearance of a watercolor painting.
Our deliverables for this section would be images rendered with the described watercolor
effects, watercolor glazing, shape and flow of pigment, edge darkening, and pigment
granulation, as well as the lighting models. We hope our results will at least be
comparable to the work of the papers we are referencing, that is a shader that
successfully imitates the transparency and bleed effects of watercolor pigments.
The images we will create will be still scenes of geometric objects or common objects
with the shader applied to transform the scenes into watercolor paintings.
We will measure the performance of our system by measuring the initial render times for scenes with
different levels of complexity (based on number of polygons).
Our project and analysis will focus on answering the problems associated with creating
convincing NPR shaders, especially with complex fluid-based mediums like watercolor,
and optimizations necessary to speed up such a shader to allow for real-time rendering.
If we get ahead of schedule, we would like to try extending the code to support custom texture maps, rather than only flat colors. This would challenge our shader to properly account for variations in patterns or colors on the texture maps while generating the watercolor maps. It may also be useful to add a basic GUI to adjust parameters for better artistic direction, such as the intensity of darkened edges, the “wetness” of regions, or the texture of the paper itself. An alternative reach goal would be porting our shader to programs that support GLSL shaders like Blender.
Week 1 (4/13)
Papers
The main paper our project will be based off of by Luft and Deussen:
Luft, T., Deussen, O. Real-Time Watercolor for Animation.
J Comput Sci Technol 21, 159–165 (2006).
https://doi.org/10.1007/s11390-006-0159-9
Other resources:
Art-directed Watercolor Rendered Animation
Computer-Generated Watercolor
Hardware and Software Resources