YafaRay
# YafaRay

YafaRay è un potente motore di rendering raytracer open source, che usa un linguaggio di descrizione XML. È stato integrato nel software di modellazione Blender ed ora può essere usato per fare il rendering di scene create in esso, senza il bisogno di esportazione. È stato rilasciato sotto la licenza LGPL.

## Storia

Il predecessore di YafaRay, YafRay (Yet Another Free Raytracer, in italiano "Ancora un altro ray tracer gratuito") è stato scritto da Alejandro Conty Estévez, e pubblicato a luglio 2002. L'ultima versione di YafRay è stata la 0.0.9 pubblicata nel 2006. A causa delle limitazioni del progetto originale, il raytracer fu completamente riscritto da Mathias Wein. La prima versione stabile del nuovo raytracer, YafaRay 0.1.0, è stata pubblicata nell'ottobre del 2008. Nel 2010 ha partecipato al Google Summer of Code.

## Caratteristiche

### Rendering

**Illuminazione globale**


    YafaRay usa l'illuminazione globale per produrre illuminazioni realistiche delle scene 3D, attraverso l'utilizzo di un'approssimazione del Metodo Monte Carlo

**Illuminazione Skydome**


    Questo sistema di illuminazione è basato principalmente sulla luce proveniente dal cielo, prendendo in considerazione anche il calcolo di leggere nuvole. L'illuminazione può essere ottenuta da un high dynamic range image.

**Caustiche**


    YafaRay usa il photon mapping che permette di calcolare le caustiche (distorsioni di luce prodotte da riflessi o trasmissioni tipo attraverso uno specchio ustore). Per simulare materiali translucidi c'è anche un subsurface scattering shader in fase di sviluppo.

**Profondità di campo**


    Gli effetti della messa a fuoco della profondità di campo possono essere riprodotti usando questa caratteristica. Con un punto della scena fissato, gli altri oggetti saranno fuori fuoco.

**Riflessi sfocati**


    Se una superficie non riflette perfettamente, si presenta una distorsione nella luce riflessa. Questa distorsione aumenterà man mano che si allontanerà l'oggetto. YafaRay può simulare questo fenomeno.

### Architettura

**Framework modulare**


    YafaRay presenta una struttura modulare, con un kernel a cui si connettono gli altri elementi di rendering: il caricatore della scena, luci e shader. Questi elementi insieme alle API, permettono lo sviluppo si plugin di rendering per consentire l'uso di YafaRay da qualsiasi programma o suite 3D. tra le suite supportate ci sono Blender, Wings 3D e Aztec.

**Multipiattaforma**


    YafaRay è stato completamente sviluppato in C++. Ciò permette buona portabilità e ci sono binari precompilati per le piattaforme più comuni:GNU/Linux, Windows 9x/XP/2000, macOS e Irix. YafaRay può essere usato come un motore di rendering stand-alone, usando il suo formato di descrizione della scena. In questo modo può essere usato direttamente da riga di comando, attraverso uno script, etc. C'è anche la possibilità di eseguire rendering in parallelo o distribuito.
