Alembic instancing in Mantra

   6058   12   2
User Avatar
Member
23 posts
Joined: Aug. 2013
Offline
Hey,

I'm doing some tests with 100 or so alembic geo nodes that all share the same alembic file vs instancing 1 alembic node 99 times. Based on my tests, it seems that instancing only saves a fraction of memory/render time.

Does Mantra internally instance alembic files if they all share the same .abc file?

Ta!

Nick D
User Avatar
Staff
2591 posts
Joined: July 2005
Offline
Nick Deboar
Hey,

I'm doing some tests with 100 or so alembic geo nodes that all share the same alembic file vs instancing 1 alembic node 99 times. Based on my tests, it seems that instancing only saves a fraction of memory/render time.

Does Mantra internally instance alembic files if they all share the same .abc file?

Ta!

Nick D

Please see http://www.sidefx.com/docs/houdini13.0/props/mantra [sidefx.com]

(search for vm_packinstance)

If you have displacement shading, or subdivision surfaces, the geometry may be uniqued. You can control this by setting:

vm_sharedisplace

The help for this parameter seems to be messed up. It should read something like:

By default, when instancing is used with displacements, the displaced
geometry will be created uniquely for each instance, since it's possible
that the displacements may differ based on the world-space position of each
instance. This default behavior will guarantee correct results but it can
be inefficient since mantra needs to keep a separate copy of the displaced
geometry for each instance. When this setting is enabled, mantra will share
a single copy of the displaced geometry between all instances, and assumes
that the displacement shader only uses the object space position to
determine the displaced position and normal.

The dicing quality used when displacements are shared will be the dicing
quality for the instance that is closest to the camera. Therefore,
instances that are farther from the camera may incur a greater rendering
cost when this setting is enabled, but overall memory use will usually be
lower.
User Avatar
Member
258 posts
Joined: July 2006
Offline
Should this be a toggle on the mantra node ? or does it do the detection by default ?
Head of CG @ MPC
CG Supervisor/ Sr. FX TD /
https://gumroad.com/timvfx [gumroad.com]
www.timucinozger.com
User Avatar
Staff
2591 posts
Joined: July 2005
Offline
tricecold
Should this be a toggle on the mantra node ? or does it do the detection by default ?

The default for auto-instancing is on. The default for shared instances is off. You may have to add the properties to either the object or the output driver.
User Avatar
Member
23 posts
Joined: Aug. 2013
Offline
awesome, thanks guys!
User Avatar
Member
41 posts
Joined: Feb. 2014
Offline
Nick Deboar
awesome, thanks guys!

Also, use micro polygon rendering
User Avatar
Member
183 posts
Joined: Nov. 2008
Offline
pedro3145
Nick Deboar
awesome, thanks guys!

Also, use micro polygon rendering

I don't think this is a good advice. :shock:
Aleksei Rusev
Sr. Graphics Tools Engineer @ Nvidia
User Avatar
Member
41 posts
Joined: Feb. 2014
Offline
Stalkerx777
pedro3145
Nick Deboar
awesome, thanks guys!

Also, use micro polygon rendering

I don't think this is a good advice. :shock:

My mistake.
User Avatar
Member
41 posts
Joined: Feb. 2014
Offline
Stalkerx777
pedro3145
Nick Deboar
awesome, thanks guys!

Also, use micro polygon rendering

I don't think this is a good advice. :shock:

Nope, It's a good advice, :wink:

The micropolygon rendering algorithm was designed for memory efficiency: geometry is diced and shaded once, then discarded when it is no longer needed (though it remains in memory if it is hit by a ray).

http://www.sidefx.com/docs/houdini13.0/render/understanding [sidefx.com]

MicroPolygon renderers only render the geometry loaded in with the current given bucket. This means insane amounts of geometry can be rendered with MicroPolygon rendering. This takes some care when dealing with geoemtry that is dynamically loaded at render time (delay load rendering) but with care, very efficient renders can be achieved.

http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=15315&view=next&sid=81e7101d55a9a531923310829aa5723b [sidefx.com]

So raytracing defeats one of the purposes of using delayed loads -> the objects are kept in memory rather than being thrown out when no longer required by the current bucket.

http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&t=15315&view=next&sid=81e7101d55a9a531923310829aa5723b [sidefx.com]
User Avatar
Member
4189 posts
Joined: June 2012
Offline
pedro3145
Nope, It's a good advice, :wink:


Beyond referencing the documentation and 4 year old posts, do you have empirical tests to show that MP is more memory efficient ?
User Avatar
Member
8554 posts
Joined: July 2007
Offline
I would stick to raytrace as well

since assuming that vm_sharedisplace works for MP (which I haven't tested), the fact that it would dice all instances with the density of the closest one may result in very heavy geometry, for which MP would need to shade every point on every instance no matter how small it is in the frame, that may actually take longer than leaving MP to dice each instance separately at it's own screen space resolution, but for sure seems like it would take longer than raytrace for most of the cases

but this is just a thought based on my understanding of MP, so maybe you can do a simple test whenever not sure
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Staff
2591 posts
Joined: July 2005
Offline
MartybNz
pedro3145
Nope, It's a good advice, :wink:


Beyond referencing the documentation and 4 year old posts, do you have empirical tests to show that MP is more memory efficient ?

I think that these days, most renders involve ray-tracing. So micro-polygon loses most of its advantages.

If you have a render with no ray-tracing, then micropolygon rendering can still have some benefits.
User Avatar
Member
379 posts
Joined: Dec. 2006
Offline
AFAIK there are no memory benefits of instancing using MP engine.
  • Quick Links