# Cycles

Cycles és un motor de renderització, el path tracing que proporciona la representació foto-realista a Blender. Permet renderitzar emprant la CPU o la GPU en funció del maquinari de l'usuari; es fa servir especialment per a efectes visuals i en la visualització arquitectònica. És multiplataforma, disponible a Linux, Windows i Mac Os. El codi font és sota la llicència Apache 2.0 i es pot integrar en programari de codi obert i comercial. Tot i això, Cycles fou desenvolupat i és mantingut per la Fundació Blender, tenint present les necessitats del programari Blender.

## Característiques

És un programari lliure sota llicència Apache 2.0. Està integrat originàriament a Blender, Poser i Rhino. Altres programaris usen connectors: a Cinema4D s'anomena Cycles4D; a Houdini, hdCycles i per a 3ds Max, Cycles for Max.
Aquest article se centra en l'ús de Cycles a Blender, programari per al qual fou concebut i on rep en primer lloc les actualitzacions.

### Cycles a Blender

Des del Render Properties (Propietats de processament) es pot habilitar Cycles o el motor de render desitjat; les funcionalitats experimentals; escollir com es renderitzarà l'escena per CPU o per GPU i habilitar l'Open Shading Language.

### Samples

Les mostres (samples) són el nombre de raigs de llum que Cycles dispara des de la càmera. Els rajos de llum són llançats i són reflectits, refractats o absorbits per objectes fins que arriben a una font de llum o arriben al límit del rebot. Per tant, es calcula la llum en el sentit invers a com viatja en el món real i és un path tracing (traçador de camins) basat en les físiques del món real. L'objectiu de disparar mostres de llum a l'escena és recopilar informació sobre tot el que hi ha present a l'escena i determinar el color correcte per a cada píxel en la imatge final. Gràcies al rebot de la llum, Cycles, obté llum indirecta de forma automàtica. Cycles ofereix diverses opcions per a controlar les mostres. Emetre un raig de llum per cada píxel no és un sistema prou precís, de manera que Cycles dispara raigs aleatoris addicionals. Aquesta aproximació per força bruta de mostres aleatòries s'anomena Simulació Montecarlo.

### Il·luminació

Cycles treballa la il·luminació de manera global, acumula memòria per a cada rebot. Per altra banda i com ja s'ha dit s'envien raigs de llum des de la posició de la càmera en lloc de la llum. En disparar un raig des de la càmera, és considerat un raig de càmera. Tots els raigs comencen com a raigs de càmera. Es pot dir que un raig s'etiqueta com un raig de càmera quan es pot veure alguna cosa directament. Quan un raig colpeja alguna cosa, produint-se el primer rebot, deixa caure l'etiqueta de càmera i agafa una etiqueta nova depenent del que s'hagi impactat. Si el raig rebotat pot colpejar la llum directament, sabem que el punt està directament il·luminat per aquesta font de llum. No obstant això, si no hi ha connexió directa amb la llum, està a l'ombra d'aquesta llum.

### Render

Els fotogrames obtinguts amb Cycles es caracteritzen per ser de major qualitat, proporcionen efectes de reflexió, emissió i dispersió de la llum molt acurats. Però també s'utilitzen molts més càlculs i va en detriment dels temps de renderització que són més elevats. Quan es renderitza de manera ràpida a Cycles s'obtenen fotogrames amb molt soroll. Per a evitar el soroll es pot activar el denoise, però podent-se perdre detalls en la imatge resultant. La versió 3.0 va millorar els temps de renderitzat i va reduir els efectes no desitjats del denoise.

### Passes

Les passades (passes) de renderització són canals diferents, cadascun conté una selecció de dades singulars que es produeixen per a una imatge en funció de com es renderitza. Durant el procés de renderització es disparen raigs de llum a través de l'escena. Aquests raigs de llum són de diversos tipus i depenen del tipus de raig, com i què impacten, recullen dades per a diferents passades. Si es vol obtenir una imatge convencional, una passada s'haurà de complementar amb les altres. Gràcies a les passades, d'una imatge en podem extreure el canal vermell, el verd, el blau i també el canal alpha o transparent; però també es pot dividir una representació 3D en diferents canals com ara la llum difusa directa o indirecta, oclusió ambiental o per material, entre altres possibilitats.
A Cycles hi ha més de trenta tipus de passades de representació disponibles, depenent de com es compti. Cadascuna d'aquestes passades es poden obtenir per separat o en conjunt. Obtenint una gran quantitat d'informació que es pot emprar en el postprocessament per a treure el millor de les representacions.

## Història

Cycles fou desenvolupat per Brecht van Lommel en la seva primera etapa treballant per a la Fundació Blender. S'introduí a Blender a la versió 2.61 del 2011. El mateix Lommel i Sergey Sharybin el varen reescriure en la versió 3.0 del 2021.

### Cycles a la versió de Blender 2.5

Anteriorment, s'havia presentat com a addon. Fou integrat per primer cop a la interfície d'usuari de la versió 2.5, que fou un llançament de desenvolupament. Pretenia reemplaçar el motor de representació interna en el marge de dos anys. Incorporava l'ús de la GPU com a maquinari de computació, en lloc de la CPU tradicional.

### Cycles a la versió de Blender 2.61

Introducció a la branca estable de Blender, tot i que encara era una versió experimental.

### Cycles a la versió de Blender 2.65

Renovació de Cycles, afegint suport per a Open Shading Language (OSL) desenvolupat per Sony Pictures Imageworks. L'usuari pot fer servir l'OSL per a escriure el seu codi propi als shaders del programa. També es va afegir el desenfocament de moviment per a aconseguir efectes més realistes.

### Cycles a la versió de Blender 2.92

Afegí suport per a la renderització híbrida (CPU i GPU) amb el backend OptiX per a les targetes NVIDIA; a més, el backend OptiX de NVIDIA també va guanyar suport per a shaders de bisell i oclusió ambiental i es proporcionà suport OpenCL per a gràfiques Iris i Xe d'Intel.
Acceleració en la renderització de volums gràcies a l'ús de l'estructura de dades volumètrica dispersa NanoVDB.
Els motors de render Cycles i EEVEEE varen guanyar compatibilitat.

### Cycles a la versió de Blender 3.0

Cycles fou reescrit comportant una acceleració dels temps de renderització per GPU d'entre 2 i 8 vegades més ràpids. Això fou possible perquè la Fundació Blender va rebre el suport econòmic de diverses empreses, fins i tot per part d'algunes que es consideraven competidores com Epic o Adobe. D'altres com AMD, NVIDIA o Apple col·laboraren amb Blender per a trobar diferents solucions per a substituir a la clàssica API OpenCL emprada per a la renderització amb GPU. OpenCL fou substituïda pel suport CUDA/OptiX a Nvidia i per HIP (Heterogeneous-computing Interface for Portability) a AMD. Aquesta millora només era suportada per Windons esperant-se que arribaria a Linux i Mac Os en la versió 3.1
Es va redissenyar la interfície d'usuari, reflectint que les mostres del render es podien adaptar al temps que es desitjava dedicar a aquella tasca. Alhora que es mostraven preconfiguracions separades per a les mostres de visualització (viewport) i les de representació (render). En lloc d'establir una quantitat de mostres específica, es passava a poder establir un llindar de soroll en el qual Cycles s'aturaria, amb un rang màxim i mínim de recompte de mostres. Cycles passà a ser proactiu intentant detectar a quines parts de la imatge hi havia més soroll i dedicar més temps en aquelles àrees.
La versió 1.4 d'OpenImageDenoise va comportar que en emprar denoise la reducció del soroll fos possible conservant en gran manera els detalls de l'escena. Afegint-se una nova opció de prefiltratge per a controlar l'eliminació del soroll de l'albedo auxiliar i de les passades normals.
El Shadow Catcher, el sistema de captura d'ombres, fou totalment reescrit, permetent controlar la llum indirecta i l'ambiental a través de la nova passada Shadow Catcher. Les ombres de colors i les reflexions precises passaren a ser més versemblants. S'afegia la possibilitat d'incloure o excloure llums.
El shadow terminator assegurà que els dissenys de baixa resolució (low polly), que normalment s'usen per a jocs, semblessin més versemblants reduint els artefactes d'ombra i suavitzant el resultat final.
La dispersió per sota de la superfície (subsurface scattering) passà a suportar l'anisotropia i l'índex de refracció per a un desplegament aleatori (Random Walk). La pell realista té una anisotropia d'aproximadament 0,8. Aquesta millora forma part del conjunt de les que impulsà Facebook des que es va sumar a la Blender Development Fund destinades a millorar la representació en temps real dels personatges digitals.

### Cycles a la versió de Blender 3.2

S'afegí suport per a grups de llum (Light Groups), fent possible tornar a il·luminar sense la necessitat de tornar a renderitzar. Es va revisar i millorar el sistema de càustiques, suportant la representació selectiva en ombres d'objectes refractius. S'afegí suport per al difuminat de moviment per a simulacions de gas i volums d'OpenVDB importats. També s'addicionà suport per a la renderització per GPU d'AMD Radeon habilitat a Linux.

### Cycles a la versió de Blender 3.3

Suport inicial per al backend d'Intel oneAPI i augment del suport per al backend d'AMD HIP.

## Referències

* ↑ «Let's Take A Look At Blender's Growth In 25 Years!». Fox Renderfarm, 16-01-2019. [Consulta: 8 agost 2021].
* ↑ «Blender: A Cycles render settings guide». Artistic Render, 16-10-2020. [Consulta: 19 desembre 2021].
* 1 2 «The Blender Foundation unveils Cycles X | CG Channel». CG Channel, 23-04-2021. [Consulta: 19 desembre 2021].
* ↑ Mercado, Pablo. «Los Tipos de Motores de Render». Industria Animavión, 19-03-2018. [Consulta: 31 desembre 2021].
* ↑ «Blender Foundation publica su informe del año 2020». MuyLinux, 11-05-2021. [Consulta: 19 desembre 2021].
* ↑ «Cycles creator Brecht van Lommel to work on Arnold | CG Channel». CG Channel, 16-06-2014. [Consulta: 19 desembre 2021].
* ↑ «The Blender Foundation unveils Cycles X | CG Channel». CG Channel, 23-04-2021. [Consulta: 19 desembre 2021].
* ↑ «Poser Pro 11 now uses a tweaked Blender Cycles engine». Blendernation, 19-11-2015. [Consulta: 19 desembre 2021].
* ↑ «Poser 12». Poser. Arxivat de l'original el 2021-12-19. [Consulta: 19 desembre 2021].
* ↑ «Cycles| Rhino 3-D modeling». Rhino3d. [Consulta: 19 desembre 2021].
* 1 2 Clisham, Liam. «An Overview of Cycles4D in Cinema4D». schoolofmotion. [Consulta: 31 desembre 2021].
* ↑ «Cycles de Blender como motor de render en Houdini». 3dpoder, 30-08-2020. Arxivat de l'original el 2021-12-30. [Consulta: 30 desembre 2021].
* ↑ «Cycles for Max». Blender Nation, 02-04-2018. [Consulta: 31 desembre 2021].
* 1 2 danna. «Quick Answer: What Is Blender Cycles». BikeHike, 29-10-2021. [Consulta: 19 desembre 2021].
* 1 2 «Cycles creator Brecht van Lommel to work on Arnold | CG Channel». CG Channel, 16-06-2014. [Consulta: 19 desembre 2021].
* ↑ «Let's Take A Look At Blender's Growth In 25 Years!». Fox Renderfarm, 16-01-2019. [Consulta: 8 agost 2021].
* ↑ «Blender: lighting basics tutorial». Artistic Render, 24-03-2021. [Consulta: 5 setembre 2021].
* 1 2 «How the light path node works in Blender». Artistic Render, 23-03-2020. [Consulta: 19 desembre 2021].
* 1 2 «Blender: A Cycles render settings guide» (en anglès americà). Artistic Render, 16-10-2020. [Consulta: 20 desembre 2021].
* 1 2 «Cycles vs. Eevee - 15 Limitations of Real Time Rendering in Blender 2.8». CGCookie, 07-03-2019. [Consulta: 5 setembre 2021].
* ↑ «Blender Eevee vs Cycles [2021]» (en anglès americà). Render Guide, 07-03-2021. [Consulta: 31 juliol 2021].
* ↑ «Render passes in Blender Cycles: Complete guide». Artistic Render, 22-11-2020. [Consulta: 26 desembre 2021].
* 1 2 Thacker, Jim. «Blender Foundation releases Blender 2.61» (en anglès americà). CG Channel, 14-12-2011. [Consulta: 11 juliol 2021].
* ↑ «Check out the five key features in Blender 3.0». Blender Nation, 03-12-2021. [Consulta: 19 desembre 2021].
* ↑ «Cycles : El nuevo motor de render en Blender : Introducción». Piziadas, 01-05-2012. [Consulta: 19 desembre 2021].
* ↑ «Blender Foundation Releases Blender 2.5 Alpha 0». Blendernation, 24-11-2009. [Consulta: 19 desembre 2021].
* ↑ Thacker, Jim. «Blender Foundation releases Blender 2.65». CG Channel, 11-12-2012. [Consulta: 21 desembre 2021].
* ↑ «Blender 2.65 Released». Blender Nation, 11-12-2012. [Consulta: 21 desembre 2021].
* ↑ «Dev:Ref/Release Notes/2.65 - BlenderWiki». Arxivat de l'original el 2021-07-12. [Consulta: 21 desembre 2021].
* ↑ Medina, Eduardo. «Disponible Blender 2.92 con un nuevo sistema de nodos de geometría y soporte de OpenCL para Intel» (en castellà). MuyLinux, 26-02-2021. [Consulta: 24 maig 2021].
* ↑ Larabel, Michael. «Blender 2.92 Released With Geometry Nodes, OpenCL For Intel Iris/Xe - Phoronix», 25-02-2021. [Consulta: 24 març 2021].
* ↑ «Discover 10 key new features from Blender 2.92 | CG Channel». CG Channel, 25-02-2021. [Consulta: 29 desembre 2021].
* ↑ «Adobe se une al Fondo de Desarrollo de Blender». MuyLinux, 21-07-2021. [Consulta: 19 desembre 2021].
* ↑ «Why All Blender Artists Need to Give NVIDIA Studio A Serious Look [advertorial [$, promoted]]». Blendernation, 16-12-2021. [Consulta: 19 desembre 2021].
* ↑ «Blender 3.0 suma el soporte de aceleración para AMD HIP». Profesional Review, 16-11-2021. [Consulta: 17 novembre 2021].
* ↑ «Cycles X Merged Into Blender 3.0 With NVIDIA CUDA/OptiX Support, AMD HIP Pending». Phoronix, 21-09-2021. [Consulta: 17 novembre 2021].
* ↑ Williams, Rob. «Blender 3.0 – How Fast Are GPUs in Cycles X, EEVEE & Viewport? – Techgage». Techgage, 03-12-2021. [Consulta: 8 desembre 2021].
* ↑ «Check out the five key features in Blender 3.0». Blender Nation, 03-12-2021. [Consulta: 16 desembre 2021].
* ↑ Larabel, Michael. «Blender 3.0 Shines As A Huge Update For This Leading Open-Source 3D Modeling Software». Phoronix, 03-12-2021. [Consulta: 28 desembre 2021].
* ↑ Lampel, Jonathan. «What's new in Blender 3.0?». CG Cookie, 05-01-2022. [Consulta: 9 gener 2022].
* ↑ «Check out the five key features in Blender 3.0» (en anglès americà), 03-12-2021. [Consulta: 19 desembre 2021].
* ↑ Frey, Shawn. «Blender 3.0: The Most Important Changes». All 3DP, 11-12-2021. [Consulta: 26 desembre 2021].
* ↑ «See Facebook Reality Labs' work on Cycles in Blender | CG Channel». CG Channel, 13-12-2021. [Consulta: 26 desembre 2021].
* ↑ «Blender 3.0 ya está disponible en descarga gratuita». 3dpoder. [Consulta: 26 desembre 2021].
* ↑ «How to use Blender Light Groups». Garagefarm. [Consulta: 20 octubre 2022].
* ↑ Nestor, Marius. «Blender 3.2 Enables AMD GPU Rendering on Linux, Adds New Rendering Features». 9to5linux, 08-06-2022. [Consulta: 12 juny 2022].
* ↑ «Blender 3.2 ships | CG Channel». CGChannel, 08-06-2022. [Consulta: 12 juny 2022].
* ↑ «Intel Champions XPU Vision With oneAPI, Data Center GPUs». SDX Central, 11-11-2020. [Consulta: 7 desembre 2022].
* ↑ «Blender 3.3 LTS ships | CG Channel». CGChannel, 07-09-2022. [Consulta: 7 desembre 2022].
* ↑ «Blender 3.3 Released With Intel oneAPI Backend, Improved AMD HIP Support». Phoronix, 07-09-2022. [Consulta: 7 desembre 2022].