We introduce a real-time system that converts images, video, or
3D animation sequences to artistic renderings in various painterly
styles. The algorithm, which is entirely executed on the GPU,
can efficiently process 5122
resolution frames containing 60,000
individual strokes at over 30 fps. In order to exploit the parallel
nature of GPUs, our algorithm determines the placement of strokes
entirely from local pixel neighborhood information. The strokes
are rendered as point sprites with textures. Temporal coherence is
achieved by treating the brush strokes as particles and moving them
based on optical flow. Our system renders high quality results while
allowing the user interactive control over many stylistic parameters
such as stroke size, texture and density.