POV-Ray : Newsgroups : povray.unofficial.patches : Megapov XRS Server v2.0.5 and pyxrsclient v0.6.7 released : Re: Megapov XRS Server v2.0.5 and pyxrsclient v0.6.7 released Server Time
23 Jun 2024 08:36:38 EDT (-0400)
  Re: Megapov XRS Server v2.0.5 and pyxrsclient v0.6.7 released  
From: George Pantazopoulos
Date: 1 Sep 2006 13:45:00
Message: <web.44f870cf3f527d0a94acffc50@news.povray.org>
> George Pantazopoulos wrote:
> > Website:
> > http://www.gammaburst.net/xrs
> I am strongly missing some explanation on how your tools and especially
> your modifications of POV-Ray work.  What is the server?  What is the
> client?  What data is exchanged between both and how (the screenshot
> indicates there is HTTP involved)?  What is different about the modified
> version of POV-Ray/MegaPOV and how does it interact with the scripts in
> the package?
> This looks like a good approach on network rendering with POV-Ray 3.6
> (although the dependency on nonstandard libs is limiting) but some solid
> documentation would be very important.

I think your questions are important, and I agree there needs to be more
solid documention. I'll put some effort towards that.

The "Server" is a modified version of MegaPOV, to which I added a new thread
to handle RPC requests.

The RPC itself is done with the simple XML-RPC protocol over HTTP. The open
source library libiqxmlrpc implements the XML-RPC interface. There is no
security layer, but the use of ssh with port forwarding will suffice and is
strongly recommended for internet renders.

There was an active synergy between the development of Megapov-XRS and
libiqxmlrpc. My feedback to the developer has helped libiqxmlrpc become a
more solid and polished product.

Main modifications of the XRS_PATCH to MegaPOV:
- New thread added to handle RPC requests over a socket connection.

- "Command line" arguments are taken from the RPC thread instead of the

- Certain scene initializations such as parsing and photon shooting are only
done once per scene session, and not for every tile.

- A NewScene() request aborts the current scene and starts a new one.

- Code was added to gracefully handle errors and abort requests. Instead of
  quitting the program they now simply terminate the current session and
megapov_xrs_server goes back to waiting for a NewScene() request over RPC.

- Code was added to allow photon shooting to be aborted quickly.

There are a few more updates, but that's in a nutshell what I modified.


The client is a python script which conrols the servers and coordinates the
parallel render. The servers are completely passive right now, so its up to
the client to query the servers as to their status. pyxrsclient

The client was a lot of fun to develop mostly because I really love
programming in Python. I was thrilled to find that Python comes with
xmlrpclib, which I used right of the box to communicate with

> BTW you should include the POV-Ray license files with the modified
> POV-Ray source files.

Will do, thanks.

> > With valuable feedback from Jaime Vives Piqueres, I fixed a bug in version
> > 2.0.5 where radiosity data was lost in between rendering tiles. Now there
> > are far fewer tiling artifacts when doing radiosity scenes, and they can be
> > eliminated altogether using Jaime's two-pass technique (involves
> > precalculating rad data using a normal version of megapov first)
> Now this is unlikely - considering the modifications you made even
> impossible - that you can guarantee tiling artefact free results with
> non-sequential rendering.  Running the pretrace for the full image in
> advance will reduce the problems but it will not remove them (try
> comparing two images of two different renders with different tilings and
> you will see).

That's right, I can't guarantee renders free of tiling artifacts with
MegaPOV XRS alone. However, what Jaime does is that he uses a normal
version of megapov to create the radiosity data ahead of time. Then he
modifies the scene with "always_sample off" and "load_file". Then he used
Megapov XRS to render this scene, loading only the precalculated rad data
and minimizing the calculation of new rad data while in parallel.

> The newest radiosity patches in MegaPOV can help you minimize the
> differences but without further changes (which will involve performance
> loss) you won't get completely reproducible results in parallel renders
> using radiosity.

Which radiosity patches are those? Sounds interesting...

Thanks for your feedback, Christoph


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.