* reconnect while rendering
>> if the client gets disconnected and reconnects it also does not pick up any more work.
You are right, this is a known issue and has not been solved yet:
https://github.com/buddhi1980/mandelbulber2/blob/master/mandelbulber2/src/netrender.hpp#L35I filed an issue on github for this:
https://github.com/buddhi1980/mandelbulber2/issues/90* line based jobs
>>... is this what the "lines" are?
Yes, it is. The jobs are split into horizontal lines and handed out on a per-thread-base of the whole server-client setup.
>>- Clients that get disconnected can reconnect and resume working on the render
>>- Allow you to add extra clients mid way through a render to speed things up
this should be possible, however we had some timing issues and implementation-specific issues with that as we tried it.
we will fix this eventually.
>> - Faster clients can take a larger share of the work load
this is already the case
* block rendering [small x-y regions e.g. 16x16 pixel]
>> - Initially this may help in providing compatibility for NetRender between multiple versions, older clients may not have all the latest greatest rendering features, but it can still do some, potentially a lot of the work, the server can prioritise the blocks that require newer features to the newer clients and let the older clients take the other work.
>> - some rendering features may be better suited to specific CPU architectures, eg some may perform better on X86/x64 cpu's and some might perform better on ARM CPU's, like wise some might perform better with intel / ATI / nvidia / other graphics acceleration. potentially future in versions clients could detect which types of blocks it will be faster at processing and tell the server which types to prioritise giving the client.
IMHO: holy mother of god!
in general this could be interesting to make, blender works something like this.
But making the render region based will make it more complicated (at least will require a lot of rewriting).
Detecting the type of cpu / gpu client and intelligently distributing the region jobs will be a lot of work and i think probably not worth the effort.
The greatest part of time consuming operations is simply the floating point arithmetic:
When a client is slow in rendering a mandelbulb it will also be slow in rendering the quaternion. No gain to separate here.
Another problem is how to pre-evaluate the regions to detect which resources are needed, whats the fastest client for this (if any).
This is only what i think, other opinions most welcome.
Thanks for your input.