[![Build Status](https://drone.deadbeef.codes/api/badges/steven/cyclescaler/status.svg)](https://drone.deadbeef.codes/steven/cyclescaler)

## Cyclescaler

Containerized, distributed blender rendering - cloud-native alternative to Blender's network based rendering.   

#### What is Cyclescaler

Cyclescaler is an easily scalable rendering system for the Cycles 3D rendering engine built into Blender.  It's incredibly easy to spin up instances on all platforms which support containers including all the good cloud providers.  You can also easily run it on premises with a Kubernetes cluster or as standalone containers with docker-compose (examples provided).  It will even run on ARM processors.  The idea is that you can use the scalability of cloud providers which allows you spin up thousands of instances momentarily to quickly render the job in parallel.

Cyclscaler is built on the following technologies:

* The Go Programming Language - https://golang.org/
* Docker - https://www.docker.com/
* Blender - https://www.blender.org/
* Drone CICD - https://drone.io/
* Semantic UI - https://semantic-ui.com/
* jQuery - https://jquery.com/
* ~~Some crap web framework~~ no frameworks, who the hell needs a framework when you're a lone developer

The project is broken into two parts:

* Master - This can be thought of as the server, it's the portal that users interact with to upload .blend files and tweak render parameters.
* Slave - This can be thought of as a client, and it handles rendering the images which get stitched together to create an animation.  There can be as many instances of the slave as you want, the more slaves, the more simultaneous frames can be rendered.  

#### Web interface

When you run the master, it listens on port 8097.  Here's a screenshot of the web interface on the status page for an ongoing render job:

![alt text][logo]

[logo]: https://deadbeef.codes/steven/cyclescaler/raw/master/example.png "Rendering using Google Cloud Platform."

