160 likes | 181 Views
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
E N D
Pan • An image synthesis “language” • Images are functions • Continuous and infinite • Embedded in a functional host language • Reusable optimizing compiler
What’s an image? • Assignment of color to points: R2 Color • Infinite, but color may be transparent • Useful generalization: R2 a
Expressing functions • Use l-calculus (Church, Curry, etc): • Or, non-anonymously: • Currying isomorphism: (ab) ga (b g ) Good for partial application
Higher-order functions Apply filter “about” a point:
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”.
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: http://research.microsoft.com/~conal/pan