network rendering central control program (C#)

General questions about Indigo, the scene format, rendering etc...
User avatar
dougal2
Developer
Posts: 2532
Joined: Wed Nov 15, 2006 8:17 am
Location: South London

Post by dougal2 » Sat Apr 26, 2008 6:16 am

A render queue is usually where you submit more than one scene to be rendered, and the slaves chug through the whole lot sequentially.
Usually also you have options to manage the queue too pause, restart, re-order, delete jobs etc.

In the case if indigo, where the render time is indefinite, this could be implemented with the additional options of setting the halt_sec or halt_samples parameters so that the slaves get a change to render every entry in the queue.

Another idea that could be implemented in the case of indigo (I'm not sure if I thought of this or if I read it here somewhere a long time ago) is to run the queue with a fairly short (or small) halt_sec (or halt_samples) to that you get a "first pass" of all the renderings, and then loop the queue again and again, resuming each frame on each queue loop to progressively improve each frame.

Again, more ideas with little regard for how to implement ;)

User avatar
PureSpider
Posts: 1459
Joined: Tue Apr 08, 2008 9:37 am
Location: Karlsruhe, BW, Germany
Contact:

Post by PureSpider » Sat Apr 26, 2008 6:18 am

Hm I think the file doesnt get sent to the master over the tracker, right?
I will actually use it to render over LAN but want to run the tracker on my root server (linux).
I could try and write a PHP script using SQL for that if you tell me the (socket) commands and what they do.

User avatar
dougal2
Developer
Posts: 2532
Joined: Wed Nov 15, 2006 8:17 am
Location: South London

Post by dougal2 » Sat Apr 26, 2008 6:19 am

OnoSendai wrote:A render queue is usually for queuing up different frames for an animation, and going through and rendering them.
It's not super-important for Indigo 'cause stills are more common than animations.
... but only because the tools that are currently available favour stills over animations.

User avatar
OnoSendai
Developer
Posts: 6210
Joined: Sat May 20, 2006 6:16 pm
Location: Wellington, NZ
Contact:

Post by OnoSendai » Sat Apr 26, 2008 6:31 am

Wow, the progressive animation idea is cool, I haven't heard that before.
One problem would be massive disk space usage due to all the .igi files sitting around.

User avatar
Russdigo
Posts: 48
Joined: Fri Apr 04, 2008 9:17 pm

Post by Russdigo » Sat Apr 26, 2008 6:45 am

This has unfortunately not solved my networking render error.

The default scenes like cornellbox_jotero work great but add my own and I get "Network slave connected from 192.168.1.39
ClientProxy: MySocketExcep: read failed, error: [unknown]"

Any idea's? I've had a look at the igs files between the working and non working files and I can't see an obvious difference to do with path....

User avatar
OnoSendai
Developer
Posts: 6210
Joined: Sat May 20, 2006 6:16 pm
Location: Wellington, NZ
Contact:

Post by OnoSendai » Sat Apr 26, 2008 6:50 am

Russdigo:
Are you sure both master and slave are running the same indigo version?

EDIT: also please show the log.txt from the slave

User avatar
dougal2
Developer
Posts: 2532
Joined: Wed Nov 15, 2006 8:17 am
Location: South London

Post by dougal2 » Sat Apr 26, 2008 7:13 am

OnoSendai wrote:Wow, the progressive animation idea is cool, I haven't heard that before.
One problem would be massive disk space usage due to all the .igi files sitting around.
not if we could control the name of the .igi output :)

User avatar
OnoSendai
Developer
Posts: 6210
Joined: Sat May 20, 2006 6:16 pm
Location: Wellington, NZ
Contact:

Post by OnoSendai » Sat Apr 26, 2008 7:14 am

Well yes, you would need to be able to control the igi names.
But you still need to have a igi file for each frame, right?

User avatar
Russdigo
Posts: 48
Joined: Fri Apr 04, 2008 9:17 pm

Post by Russdigo » Sat Apr 26, 2008 7:22 am

Both Master and Slave are using v1.0.8

The slave log has only kept the last render that worked not the one that failed.

The Master log is below.

SSE present.
SSE2 present.
SSE3 present.
Using base Indigo directory path 'c:\indigo\indigo_v1.0.8'.
Scene file path: 'C:\indigo\indigo_v1.0.8\testscenes\test.igs'
Using working directory path 'C:\indigo\indigo_v1.0.8\testscenes'.
Loading Scene 'C:\indigo\indigo_v1.0.8\testscenes\test.igs'...
Using Reinhard tone mapping with pre_scale=4.000000, post_scale=1.200000, burn=6.000000
Network slave connected from 192.168.1.39
ClientProxy: MySocketExcep: read failed, error: [unknown]
Dropping connection to slave.
Building Object Tree...
1 objects.
calcing root AABB.
AABB: (0.000000, 0.000000, 0.000000), (0.000000, 0.000000, 0.000000)
max tree depth: 2
reserving N nodes: 1(8 B)
total nodes used: 1 (8 B)
total leafgeom size: 1 (4 B)
Finished building tree.
AutoFocus: setting camera focus distance to 100000000.00000 m.
Master buffer size: 22.101 MB
Settings:
Splat filter: mn_cubic, blur=0.30000, ring=0.30000
Downsize filter: mn_cubic, blur=0.30000, ring=0.30000
Render region: false
Supersample factor: 2
Metropolis: true
Bidirectional: true
Hybrid: false
Ray origin nudge distance: 0.00010 m
Aperture diffraction: false
Post-process diffraction: true
Finished initialisation

nikolatesla20
Posts: 52
Joined: Fri Mar 09, 2007 4:44 am

Post by nikolatesla20 » Sat Apr 26, 2008 8:42 am

PureSpider wrote:Hm I think the file doesnt get sent to the master over the tracker, right?
I will actually use it to render over LAN but want to run the tracker on my root server (linux).
I could try and write a PHP script using SQL for that if you tell me the (socket) commands and what they do.
In that case I would have to change the code over to connect to your root server on port 80 and navigate to a specific web page and then parse the data that comes back.

So for example in the root server you would have a page like AddClient.php?ClientServer=x.x.x.x where the X's would be the IP to add (and then the render clients would connect to the PHP server and navigate to that page with GET data), and then you could have IndigoClients.php which simply returns a list of client IP's (so the master navigates to the webpage and then parses the page data)

The only bad thing about using PHP / SQL is the tracker server won't necessarily get notification when a client dies. Right now the tracker is live too, so it knows when a client disconnects, and removes it from the list, so the master doesn't waste time trying to connect to it.


-niko

User avatar
PureSpider
Posts: 1459
Joined: Tue Apr 08, 2008 9:37 am
Location: Karlsruhe, BW, Germany
Contact:

Post by PureSpider » Sat Apr 26, 2008 9:09 am

Hm actually it is life.
I'm running an IRC bot which is live too.
Just use PHP-CLI instead of the PHP Apache one, there you can set the execution time of the script to infinite and let it run in a endless while loop.
That way the master would get notified if a client (or in that case a socket) dies.

Sukrim
Posts: 66
Joined: Wed Jan 09, 2008 6:47 am

Post by Sukrim » Sun Apr 27, 2008 1:32 am

OnoSendai wrote:Well yes, you would need to be able to control the igi names.
But you still need to have a igi file for each frame, right?
Well you would need it anyway if you render animations, right? If I render for example 3 hours on one frame and want a better version later on I surely won't start renderin all over again but keep the igi to be able to resume.

What I don't really understand: Could I start a scene independently 100 times, render to let's say 100 SPP, save the igis and send them to a Indigo master that just sits there and idles around, waiting for slaves? Or would it be better to let the picture go up to 10 000 SPP and then send it at once? Theoretically the output should be the same if I use 100*100 SPP with 100 different seed values or 10 000 SPP with only one seed value, right?

User avatar
dougal2
Developer
Posts: 2532
Joined: Wed Nov 15, 2006 8:17 am
Location: South London

Post by dougal2 » Sun Apr 27, 2008 1:53 am

Sukrim wrote:Theoretically the output should be the same if I use 100*100 SPP with 100 different seed values or 10 000 SPP with only one seed value, right?
yes, it is effectively the same.

Sukrim
Posts: 66
Joined: Wed Jan 09, 2008 6:47 am

Post by Sukrim » Sun Apr 27, 2008 2:19 am

Then a "rotation mode" would be really nice!

Example

Code: Select all

START /B /BELOWNORMAL Indigo_console.exe -rotate myscenescene_frame1.igs myscenescene_frame2.igs myscenescene_frame3.igs -igifiles myscenescene_frame1.igi myscenescene_frame2.igi myscenescene_frame3.igi -rotatespp 500 (or -rotateafter 1000) and -n m/wm/s if needed
Or a tool/function to combine multiple igi-files to a single one:

Code: Select all

Indigo.exe -combine frame1_001.igi frame1_002.igi
Then you could just send some work somewhere (*.pigs format) let it render there (let's say standardized in 50 or 100 SPP-"blocks") and reimport the igi-files. This would also be a great way for distributed internet rendering, since it doesn't have to send updates at fixed intervals (the update images can get quite big as you know...) and you still get your results relatively fast.

This could also be a good solution for render farms, since I guess they could easily render a scene out to 10 or even 100 SPP as a preview and then you can decide how many SPP you need and you can also calculate how long this would take since you get constant progress updates in the form of 100 SPP blocks.

User avatar
dougal2
Developer
Posts: 2532
Joined: Wed Nov 15, 2006 8:17 am
Location: South London

Post by dougal2 » Sun Apr 27, 2008 3:16 am

I already wrote a command line prog to merge multi IGI files.
It's linked somewhere here on the forum, I'm sure.

edit: here: http://www.indigorenderer.com/joomla/fo ... php?id=557

Post Reply
78 posts

Who is online

Users browsing this forum: No registered users and 4 guests