Jump to content

PBR multithreading


Recommended Posts

I'm rendering a car in PBR. I've noticed that multithreading doesn't really respond the way it does with micropolygon. I'm using Windows XP, unfortunately, ( hopefully not for long ). I see that if i switch my rop to use PBR it uses only around 25% of my cpu power. When i switch to micropolygon mantra, it spikes to around 75%. raytracing uses %75, micropoly pbr uses 25%.

Is this an isolated issue or is this normal for PBR?

Obviously the potential to make amazing images in PBR is there, but speed is key to make it a viable option. Any help would be greatly appreciated. Thanks!

Jonah

Link to comment
Share on other sites

I've learned a bit about this since posting this. I spoke with Andrew Clinton, the author of PBR, and he gave me some good ideas on how to look around.

The problem was one of my shaders. I have a model with lots of parts, and I was using a couple of material sops to assign different shaders to different groups. One of them was my personal Uber shader which has lots of un-used texture calls, noise calls, functions etc. with lots of on-off switches. Apparently something about that shader was causing the whole thing to not be able to multithread while in combination with other, simpler shaders. When I removed it, the rest of the stuff went through the roof. Renders went from 26 minutes to 7. Strangely, when I used ONLY the Uber-shader, multithreading worked fine as well.

It's a bit early to say exactly what it was in that shader that was causing the computational traffic jam. I'm going to investigate a bit more and I'll let you know what I find out. Thanks for your help!

Link to comment
Share on other sites

In case anyone is still interested, we have found the culprit. A "Multi_SSS" node was buried deep in my shader, unutilized. That node is causing all of my problems. Even though it is switched off, it is causing a lot of calculations that I do not want, and therefore it's killing my multithreading. This only occurs if my relevant Limit settings ( Reflect Limit, Diffuse Limit, Glossy Limit ) is set to higher than 1. Once it is, everything goes crazy at render time.

Simply having that node in my shader, even if it's switched off, will cause the shader to run very poorly. I tried putting the switch outside of the subnet, but it didn't work. Seems like there isn't any way to shut that sucker down except by completely unwiring it from any output, which is unfortunate for micropoly rendering purposes.

I told SideFX what I found and they said that this was indeed a bug. They said it was no big deal to fix it, but some of you out there should be aware of this in case you have this operator in any shaders that you support for both Micropoly and PBR.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...