Houdini 12 point instancing super slow to render

   6252   7   2
User Avatar
Member
10 posts
Joined: Jan. 2012
Offline
Hi
I'm trying to render about 30000 instances of randomly scattered geo chosen out of 20 different models, each with it's own material. The rendering takes forever to even start and consumes over 15 gig of ram. When removing all material assignment the rendering is very quick to start with very low memory usage. I've tried assigning the materials at the instance point level instead of the source geometry but it didn't help.
Could anyone suggest an efficient workflow that would be practical to render that kind of scene?

Thanks in advance!
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
What shader are you using ? If its the default mantra surface shader I would be rolling my own basic version of that and dropping all the stuff not needed.

rob
Gone fishing
User Avatar
Member
10 posts
Joined: Jan. 2012
Offline
Hey Rob,
From the first couple of tests it looks like your suggestion works. Using the other prebuilt materials like chrome for example also take forever but clay works fast, even tweaked to enable reflections hasn't made a difference. I'm relatively new to Houdini, is there something in the mantra surface shader, aside from being a large network, that would force unnecessary duplications or processing at render time? if I have 20 different source objects for the instancing, each with its own material, wouldn't mantra get just 20 definitions of those materials or does it actually export a material per instance? (I'm using the fast point instancing option).
Also, would you recommend assigning the materials not at the source level but rather on the instance points? Does it matter?

Thanks alot for your help
User Avatar
Member
10 posts
Joined: Jan. 2012
Offline
Apparently it was something to do with displacements in those prebuilt materials. I haven't actually used displacement but keeping my previous materials and just disconnecting any displacement nodes resolved the problem. Same scene now starts rendering in less than 30 seconds using only 600mb which is excellent.

Thanks again!
Yaniv Gorali
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
Hi without looking at your scene its very hard to suggest things but …

If your not ray tracing, try using delayed load aswell , also try the new point instanced procedural workflow accessed in shops ( ask support for an example ) . Also you could try 1 shader and then add a lot of local overrides to the object . Check out the attached scene for a basic example.
I generated the local overrides by use of the small far right down facing triangle > leads to a fly out menu located on the material tab per object.

Maybe we could use this thread to drive all the tips and tricks people come up with ?

Rob

Attachments:
rse_shaderoverides_v001.hip (385.4 KB)

Gone fishing
User Avatar
Member
10 posts
Joined: Jan. 2012
Offline
That's a good idea, any workflow suggestions are more than welcome.
I'll have a look at your scene but definitely removing the displacement connection in the material solved my problem. I could render multiples of the number of instances i previously had with barely any memory impact. Maybe it's a bug or my limited knowledge but even with true displacement off it was still consuming memory as if it was displacing each instance separately.

Cheers
Yaniv
User Avatar
Member
1 posts
Joined: April 2011
Offline
From what I know about instancing, if you are ever using material attribute overrides with instancing you are adding a huge amount of extra time to render because for each instance that has a seperate set of values it is creating another shader.

I could be wrong about the reasons why this adds so much time, but I have found that using material overrides on instances adds a gigantic amount of time to the render, especially (as you have noted) if displacement is involved.
User Avatar
Member
1390 posts
Joined: July 2005
Offline
WhyGee
Hi
I'm trying to render about 30000 instances of randomly scattered geo chosen out of 20 different models, each with it's own material. The rendering takes forever to even start and consumes over 15 gig of ram. When removing all material assignment the rendering is very quick to start with very low memory usage. I've tried assigning the materials at the instance point level instead of the source geometry but it didn't help.
Could anyone suggest an efficient workflow that would be practical to render that kind of scene?

Thanks in advance!

Don't use random values on materials per instance, make 10-30, or some other reasonable number of variations of shaders parameters. And yes, displacement with instances means there are not instances anymore, since it forces to create an object per every instance.
  • Quick Links