domenica 25 marzo 2012

SUNFLOW - GLOBAL ILLUMINATION RENDERING SYSTEM


Sito: http://sunflow.sourceforge.net/

Sunflow is an open source rendering system for photo-realistic image synthesis. It is written in Java and built around a flexible ray tracing core and an extensible object-oriented design. It was created as a framework for experimenting with global illumination algorithms and new surface shading models.

 

 

Current Features

  • Fully extensible architecture. Almost every aspect of the renderer can be customized.
  • User extensible features are exposed as interfaces, making it easy to integrate into existing applications
  • Simple API for procedural scene creation
  • Direct Illumination with soft shadows from area lights
  • Adaptive sampling of area light sources
  • Quasi-Monte Carlo sampling architecture: all sampling operations are fully deterministic
  • Depth of field
  • Camera motion blur
  • Multi-threading
  • Photon Mapping (for global illumination and caustics)
  • Run-time compilation of shaders 
  • Lazy processing of tesselation, acceleration structure building and texture loading
  • Lightmap generation (render to texture)
  • Instancing (many copies of the same object take up very little additional memory)
  • Bucket renderer
    • Adaptive anti-aliasing (over and under sampling)
    • Bucket based rendering (programmable ordering)
    • Multi-pixel image filtering
  • Progressive refinement renderer
  • Texture mapping (JPG, PNG, TGA, HDR loaders)
  • Bump mapping
  • Normal mapping
  • Custom scene format: basic translators exist for 3ds files and Blender
  • Output formats: HDR, PNG, TGA, OpenEXR (tiled only)
  • Written 100% in Java
  • Simple Swing GUI with progressive rendering display and console.
  • Simple Swing display driver that can be embedded in other applications.
  • Primitives
    • Triangle mesh
    • Hair curves
    • Disk
    • Sphere
    • Torus

    • Bezier patches (built-in teapot and gumbo models) - tesselated on demand
    • Infinite plane
    • Cube-grid (eg: Menger Sponge)
    • Cornell Box
    • Julia Quaternion Fractal
    • Particle Surface (large sets of spheres)
    • Programmable (surfaces can be tesseleated by Java code compiled and executed on demand)
  • Cameras lenses
    • Pinhole
    • Spherical (produces a longitude/lattitude environment map
    • Thinlens (produces depth of field effects, including bokeh)
    • Fisheye
  • Ray intersection accelerators
    • SAH KD-Tree
    • Bounding Interval Hierarchy 
    • Uniform grid
    • Bounding volume hierarchy
    • Null (for simple scenes)
  • Surface shaders
    • Diffuse
    • Mirror
    • Glass (with absorbtion)
    • Phong (with glossy reflections)
    • Ambient occlusion
    • Shiny diffuse
    • Anisotropic ward
    • Wireframe
    • Programmable (in Java - compiled during scene loading)
  • Surface modifiers
    • Bump mapping
    • Normal mapping
  • Light sources
    • Point light
    • Directional spotlight
    • Triangle area light 
    • Image-based infinite area light
    • Physically based sun/sky system
  • Photon mapping engines
    • KD-Tree
    • Grid based
  • Image filters
    • Box
    • Triangle
    • Gaussian
    • Blackman Harris
    • Catmull-Rom
    • Mitchell
    • Lanczos
    • Sinc
  • Bucket orderings
    • Hilbert
    • Spiral
    • Row
    • Column
    • Diagonal
    • Random
  • Global illumination engines
    • Irradiance caching
    • "Instant GI" - based on "Illumination in the Presence of Weak Singularities"
    • Path tracing
    • Fake ambient term
    • Ambient occlusion

Contributors:

  • Robert Lindsay
    • Blender exporter
  • Rami Jarakivi
    • TGA input/output
    • OpenEXR display driver
    • Swing GUI Drag and drop support
    • Various bug fixes and optimizations
  • Kristoffer Berg
    • Website design
    • Logo design
  • Artur Brinkmann
    • Documentation

Planned Features

  • Documentation (!)
  • Infinite progressive rendering
  • Shader graphs
  • Improved shader API
  • Dataflow formulation of the rendering pipeline
  • Advanced Swing GUI with support for all rendering options
  • Volume shaders for participating media
  • Geometric and light source motion blur
  • Spectral rendering