|
Table of Content: |

YafaRay logo, created by Javier Galán Rico in 2005.
YafaRay is an open source raytracing render engine. As an open source project, users and developers have free access to the source code and it is free, as in free speech.
Ray tracing is a rendering technique for generating an image by tracing the path of light through the 3D scene. This technique tries to reproduce the natural behaviour of light and its particular effects on surfaces, such as reflection and refraction, caustics and indirect lighting.
YafaRay works as a render engine. An engine consists of a 'faceless' computer program that interacts with a host 3D application to provide very specific raytracing capabilties "on demand". Blender 3D is the host application of YafaRay.
By using python scripts, YafaRay takes advantage of the new ID Property mechanism of Blender to retrieve most of the scene data, without adding any custom code to Blender. Other specific parameters are set up by a python-coded settings interface used from Blender.
YafaRay main features are:
Lights:
- point
- spot light
- area light (rectangular, or parallelogram actually)
- mesh light (uses a triangle mesh as light source)
- sphere light
- directional (with optional radius)
- sunlight (basically a directional with incoming direction sampled from a cone)
- environment light (background), with importance sampling for efficient image-based lighting (even without GI)
Materials:
- Multiple materials for a mesh.
- basic diffuse w. specular reflection, transparency and translucency, support for shader nodes on various properties
- diffuse+glossy material (Ashikhmin&Shirley), Blinn or anisotropic microfacet distribution w. fresnel effect
- shader nodes support on diffuse+glossy color, glossiness and bump
- coated version of the above mentioned, adding specular reflection with fresnel effect (dielectric)
- basic glass (dielectric) material, with fresnel, filter, absorption and dispersion.
- emit material
- export of blender's texture layers as shader nodes
- blend material, using a blend value or a texture map.
Mapping:
- Multiple textures for a shader.
- UV coordinates.
- Flat, cube, tube, sphere in global and relative coordinates.
- Blending modes.
- Stencil.
Textures:
- Basic image textures (tga, jpeg, png, exr, hdr),
- Procedural textures: cloud, marble, wood, voronoi, musgrave, distorted noise and "RGB-cube".
Backgrounds:
- Constant.
- Sunsky generator with sun light and sky light.
- Texture, Image-based Lighting.
- Simple gradient.
Cameras:
- Perspective camera with raytraced DoF.
- Architect with raytraced DOF.
- Orthographic camera.
- Angular camera.
Surface integrators:
- direct lighting with support for ambient occlusion and caustic photon maps
- path tracing
- photon mapping with final gather
- bi-directional path tracing
- Volume integrator
Volume rendering.
Antialiasing:
- adaptive (simple color threshold based)
- variable size reconstruction filters (box, gauss and mitchell-netravali currently)
Transparent shadows.
Multithreaded rendering passes and radiance map creation.
Basic XML writing and reading (using libXML) for scenes (see YafaRayXML for specifications).
Plugin based.
The YafRay (Yet Another Free Raytracer) project was started in 2001 by Alejandro Conty Estévez, and the first public release was in July 2002. These are Jandro's recollections from those years:
http://www.blender.org/documentation/htmlI/c12235.html
By request from the Blender Community, YafRay was added as a Blender plugin from the 2.34 release on, in August 2004. Alejandro de Greef (eeshlo) coded most of the features in the late YafRay releases. At that time it was already evident that a code rewriting was necessary in order to add new advanced features to YafRay. The last YafRay release was the 0.0.9 version in Summer 2006.

One of the first YafRay renders by Jandro, circa 2001.
YafaRay is the result of rewriting the YafRay source code from scratch. Mathias Wein (Lynx) started to work on the new engine in December 2005. As a result of the rewriting and to make people aware that it was actually a completely new engine, the YafRay name was changed into YafaRay. Nobody knows for sure what the added 'a' stands for.

One of the first YafaRay renders by Lyxn3D, circa 2005.