Question regarding estimate and effort for cycles renderer improvements

Hello everyone!

As a business person that wants to create new more energy effective render farm with using mobile first approach, I want to figure out costs for such list of imprivements(if here is person (s) tha can make corresponding improvement and can say how much time and money this task can take):

Common Idea: make possible to split rendering between a lot of weak devices - so it will be possible to render on such energy effective arm devices like smartphone, tablet on Android OS.

So:
TASK#1: make possible to run rendering separately (without) of blender.exe
So renderer distributive will be smaller then Existing blender package and will take less resources to run rendering (as we have no exceed dependencies for GUI)
(Maybe this functionality already exists, but I didn’t found it)

TASK#2: make possible to split rendering process on about 1000 small parts for each frame. So task that take about 10 hours to be done - will be splitted on a lot of microtasks and each microtask will be finished even on weak device in about half of 1 minute. Or made fast in background mode on 1000. Different devices and get quickly result.

TASK#3: make possible to collect finished rendered microtasks results into final rendered image

TASK#4: make possible for gathering render results to be failure tolerant (re-send request for rendering microtak if previous request was failed (corrupted or didn’t come by time out)

TASK#5: add encryption to microtasks so we’ll be sure that if we get not open open but commercial order for rendering - nobody can get rendering resources or rendering results

TASK#6 make this upgraded renderer (server and clients) as library ( *.dll?) - so it will be possible to connect them to my own ui or os service

TASK#7 port this upgraded renderer (version for microtasks) on Android OR WebGL

I know that I described even not huge, but giant amount of work - but I need figure out at least approximately how much time and money need to implement these features (improvement of render) - so I’ll be able to put these numbers in my business plan and find investor.

So I will be glad if some of You proffesional guys (render developers) give me answers on my questions.

This is quite hard to estimate. I would say at least a year for a competent developer to get a finished product, the cost of which depends a lot depending on the country.

I assume this would be some kind of distributed render farm that users would install on their private phones? In that case you’d also need an Android UI, website, etc. I’d also imagine some time should be spent to profile and optimize Cycles for ARM processors.

As I’ve explained in the other thread though, I think you really need some hard numbers to figure out if this kind of render farm is cost effective at all compared to a more regular one. I’m sceptical about this.

I created web pages and Android app before - so I understand estimation for creating web sites and ui client for Win and Android application.
It’s not a problem.
But I have no experience in c++ and rendering - that’s I am asking about estimation for it’s improvement here. So when corresponding improvements will be applied for renderer I’LL be able to build UI clients by my self (using renderer as library for my UI client)

Ok, so I tried to figure out what can take the most time in rendering process.

And as I see it’s “tiles”.

We can quickly load scene and another info, but it takes about 3 hours on my laptop to render all 1700 tiles from cpu banchmark bland file (example that we can find in tutorials)

So now question how to launch renderer for some specific .blend file for specific tile only (or tiles set).

Could anybody advise how to do it?

Border render can be used for this.

You could look at existing Blender render farm and distributed rendering software, for example https://bitwrk.net/ can do this kind of splitting.

One of the big flaws you might not realize with your notebook is that on average the geometry + textures can take about 500 MB at least and transferring that kind of data from RAM to GPU is done in an instant but transferring this through the internet is much slower and you need to have high bandwidth. Especially if the mobile phones you want to use for rendering would be spread across the world on people’s desks and so on. Another flaw is that mobile GPUs just aren’t price/value as powerful and they lack any kind of active ventilation so they throttle fast if under a lot of strain and rendering is very stressful for hardware. And the last flaw is the memory that will be lower than desktop counterparts so complex scenes are out of question.

I think what you propose is interesting but not viable. Maybe with more and more capable old hardware being collectable cheaply (people not finding use for old phones). But there is still a massive problem of supporting every single one of them and polishing out the many bugs that arise. The question is how many phones do you need to beat one 1070 in a computer of 6 GPUs which would roughly be worth 650$ let’s say (counting 1/6th of the price of the computer too).

If you have money to invest and are looking to do something like this, why not join with someone with similar ideas? Check out crowdrender :wink:

(CrowdRender dev here)

Adam’s summary is very accurate. It is a nice idea, but there’s a lot of work that goes on which is challenging to push over the internet. Even rendering one tile of an image in cycles requires the whole scene to be in memory (GPU memory if rendering on a GPU). Most phones aren’t capable of 1. fitting it all in RAM and 2. sustaining processing for a long period of time.

If you just want the final outcome, please come and talk to us at CrowdRender.