CompuServe Thread

Frame Dist. Rendering

7 messages in this thread
#64579From: Jim HogartyNov 1, 1993 1:33 PM
This message is regarding a technique for distributing the task of rendering a single frame to multiple machines. The two main problems to solve are alignment of the individual portions of the image and the compositing of those images. The first problem can be solved by rendering a region of a camera view. It must be a camera view because if one tries to select a window in a non-camera viewport, the second corner begins to scroll the display. The region must be roughly one nth of the viewport, where n is the number of machines to which te job will be distributed. Which area of the viewport the region window covers is not important, the rule of thumb is to cover a proportional amount of geometry in the scene. As a simple example, for four machines, one might select the four qaudrants of the screen, or four equal sized horizontal bands, or whatever, the regions must, however, overlap each other a least a little bit. (Or perfectly tile the screen which is not realistic to expect.) Covering the edges of the viewport seems to be the har part of the task, but not that hard. These region renderings become the sub-tasks to distribute to other machines, once these sub-tasks are completed it is time to composite them. The compositing task is extremely simple. Go into video post, add four (or however many sub-tasks were created) events, change them to bitmap images which are the completed rendered regions, and (important!!!) use RGB black for alpha information. Make sure your background is set to none (black). The finished composition is identical to a full rendering of the viewport, provided that the regions selected completely cover the screen! The reason for my message is to point out two behaviors of 3D-Studio R. 3 that could be enhanced to facilitate this single-frame distributed rendering technique. The ability to dispatch these rendering sub-tasks over the network is impeded by the fact that if you render region to a network queue, the ENTIRE VIEWPORT is rendered, NOT just the region. I suspect the cmd file that gets written only can issue which viewport to render and not window coordinates. As such, these sub-tasks may NOT currently be dispatched over the network and must be started individually on each machine to be used. This either requires a hardware lock, or the temporary installation of a hardware lock, to be removed after the rendering has been started. The other interesting behavior is that on region renderings, the portion of the resulting image file that is outside of the region has alpha that is pure white, not black as might be expected. (Non rendered areas you'd typically want to be see-through since nothing was rendered, just like a background.) Aside from these two items (especially the first) this distributed rendering technique works great, and can substantially reduce the amount of time to produce a still rendering of an extremely large model. Please let me know if there is a work-around to passing render region jobs over a network (a command-line switch would suffice, but I couldn't find one), or even an IPAS if one were available. Thank you, Jim Hogarty 72110,1576
#64585From: MARTIN G FOSTERNov 1, 1993 2:52 PM
Gary's gone on vacation for the entire month of November – he deserves it <g>. Your points are extemely interesting and I'd suggest uploading the technique into the libraries. Either that e-mailing Gary and not expecting a reponse until early December. I'm certainly going to memorize this technique, it sounds like a great timesaver, especially on large images.
#64668From: Schreiber InstrumentsNov 1, 1993 11:57 PM
I haven't tried your rendering regions but I would expect the savings to be very small. The bulk of the data (memory) is used for the objects, texture maps, shadow maps. Without slicing up the model itself the only savings I see would be with image buffer itself. Not much compared to the extra work envolved.
#64771From: Doug CochranNov 2, 1993 7:54 PM
I have tried rendering to region. The advantage of this technique allows for faster test images on certain areas of concern. Now if you divided one image into say 4-regions. It would definantly render faster over 4-machines. On a extremely large high resolution "poster size" image, Jim's technique would be a time saver. HATS of to ya! Jim. …All we need is an IPAS routine to make it easier. …Wheres Grey Pryos?
#64784From: Schreiber InstrumentsNov 2, 1993 9:06 PM
I hadn't thought of poster size. The image buffer would be very large you still need the capacity on each machine to handle the entire model. BTW, you are talking (typing?) to an IPAS developer and no the process is not possible in the R2 IPAS release. Someone with more time then wits could fire up the whole subdivision process as a standalone program. Read the whole scene in divide into quadrants then write only those entities required back out to seperate files. Keith.
#64807From: Nov 2, 1993 11:31 PM
Keith: Hi! Since my name was mentioned (in vain!) in this thread, I thought I'd jump in! Maybe in R3 you'll have control of the "render region" box. If so, you could just write a simple routine that splits the rendering into even portions and renders each region on a separate machine. Your idea of writing out only those entities required would be difficult if the user had shadows or reflections turned on – I don't know if there would be an easy way of testing to see if they would appear in another region without actually rendering them! Let me know how you do with the routine – if you need a good method of distribution, you can always call us! <g,d,& r!> Greg Pyros
#64877From: CSA/CANov 3, 1993 12:52 PM
Doug, PMJI. It seems to me that to split up rendering of a high-res image, it wouldn't be all that difficult to manually split the scene to render to region. The split only has to be approximate, say 4 regions starting from opposite corners, with a slight overlap. Assign the render to whatever machines are available. Then composite in Video Post using Align to place them from their corners. Supposedly, any overlap will be identical pixels, resulting in a complete image. Still, as has been mentioned, each machine has to have sufficient memory to render the portion of the scene, with maps, etc. Kevin Krell – Computer Support Associates