Watercolor and Stylized Rendering R&D

Custom post-processing system combining illustration shading and interactive watercolor simulation.

The Challenge

Create a real-time rendering style inspired by hand-drawn ink illustration and watercolor techniques while keeping the pipeline performant and interactive.

Stylized rendered scene with crosshatching and watercolor in unity

Technical Highlights

  • I developed a crosshatching system that makes use of shadow and lighting textures to determine occluded areas. The texture being used is being wrapped around surfaces through triplanar mapping so it stays in place when moving the camera, since this is a common problem when working with image processing effects.

  • The outlines are driven by accessable G-Buffer textures like Normals and Depth that each run through a sobel filter pass to sample outlines of objects in the scene.

  • The painting system was the most challenging piece in this project. It works using render textures, created for each object. The painting itself is handled by a compute shader that writes to said texture.

    Performance Considerations: Since I am creating a lot of render textures at runtime, its important to watch out for memory bottlenecks. To at least reduce draw calls for objects that share the same materials, I am using Material Property Blocks so objects can keep their original material while still using individual painting textures.

  • This pass was the most fun to create and is technically quite simple. Its just an additional step while painting on the watercolor mask textures:

    When a new stroke is started, the texture gets distorted using curl noise to simulate fluid like behavior.

The Pipeline

Variation

The created mask texture while painting can be used for all sorts of effects. In this case, I am not using it as a color texture but rather as a mask to display the underlying texture of the object itself.

Previous
Previous

Pothunter

Next
Next

Photogrammetry - Tiegelgussdenkmal Essen