Jump to content
chaindriver

ROP dependencies

Recommended Posts

Hi,

I'm trying to figure out ROP dependencies.

Say I have two geometry caches that I need to cache frame by frame. After this is done for the whole frame range, I would like to cache two other geometry caches frame by frame. How should I link up the ROP network to do this?

Share this post


Link to post
Share on other sites

 cache1    cache2  cache3  cache4
    \      /          \     /
      merge            merge
        |              /
      batch +---------+
        \   |  .
         prepost

This will make cache3 and cache4 dependent on the entire frame range of cache1 and cache2. If the frame ranges of cache1 and cache2 are smaller than the range you're rendering, you can set their frame mode to be "Frame Range (strict)" and no frames outside the range you specify will be rendered.

For example, this will produce the following for frames 1-10 (-f 1 10 1) when interleaved (-I). -p prints the results rather than executing the ROPs.

/ -> render -I -p -f 1 10 1 /obj/ropnet1/prepost1
1 [ ] cache1    1 2 3 4 5 6 7 8 9 10 
2 [ ] cache2    1 2 3 4 5 6 7 8 9 10 
3 [ 1 2 ] cache3        1
4 [ 1 2 ] cache4        1
5 [ 1 2 ] cache3        2
6 [ 1 2 ] cache4        2
7 [ 1 2 ] cache3        3
8 [ 1 2 ] cache4        3
9 [ 1 2 ] cache3        4
10 [ 1 2 ] cache4       4
11 [ 1 2 ] cache3       5
12 [ 1 2 ] cache4       5
13 [ 1 2 ] cache3       6
14 [ 1 2 ] cache4       6
15 [ 1 2 ] cache3       7
16 [ 1 2 ] cache4       7
17 [ 1 2 ] cache3       8
18 [ 1 2 ] cache4       8
19 [ 1 2 ] cache3       9
20 [ 1 2 ] cache4       9
21 [ 1 2 ] cache3       10
22 [ 1 2 ] cache4       10

The first number is the ID of the job, the numbers in square brackets are the job IDs they are dependent on, and the last number is the frame to be rendered.

If you need cache2 to be dependent on cache1 instead, remove the merge and wire cache1 as the input of cache 2:

   cache1
     |
   cache2
     |
   batch   +---- etc. 
     \    |
      prepost

Think of merge as allowing its inputs to render in parallel (no dependencies), while making a ROP an input a second ROP implies serial rendering.

Share this post


Link to post
Share on other sites

Thanks so much for the awesome detailed reply Mark!

I've tried it out and it works like how you have mentioned.

One small question left though: Using your method, is it possible to get cache1 and cache2 to run frame by frame? Right now they have to run node by node because of the batch node below, it seems.

Share this post


Link to post
Share on other sites

There's currently no way to interleave frames in a prepost's Pre or Post inputs. An "interleave frames" toggle would need to be added for each input.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×