Functional Image Synthesis
Pan An image synthesis “language” Images are functions Continuous and infinite Embedded in a functional host language Reusable optimizing compiler
Examples
What’s an image? Assignment of color to points: R 2 Color Infinite, but color may be transparent Useful generalization: R 2
Expressing functions Use -calculus (Church, Curry, etc): Or, non-anonymously: Currying isomorphism: ( ) Good for partial application
Spatial transforms
Images
Higher-order functions Apply filter “about” a point:
Examples
Programming example
Another
Some details
Another
Implementation An “embedded language”, but compiled. Programs manipulate expression trees. Almost transparent, via overloading. Automatic full inlining. Simplification via smart constructors. First-order CSE and loop hoisting. Easy to reuse for new “language”.
More examples
Conclusions Modular & efficient image synthesis DSL design & implementation technique: –Simple, computable semantics –Embed in functional host language –Reusable optimizer & code generator To try: sound, 3D, … Freely available – try it out: