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
Alembic instancing in Mantra
6393 12 2- Nick Deboar
- Member
- 24 posts
- Joined: Aug. 2013
- Offline
- mark
- Staff
- 2643 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.
- tricecold
- Member
- 260 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
CG Supervisor/ Sr. FX TD /
https://gumroad.com/timvfx [gumroad.com]
www.timucinozger.com
- mark
- Staff
- 2643 posts
- Joined: July 2005
- Offline
- Nick Deboar
- Member
- 24 posts
- Joined: Aug. 2013
- Offline
- pedro3145
- Member
- 41 posts
- Joined: Feb. 2014
- Offline
- Stalkerx777
- Member
- 183 posts
- Joined: Nov. 2008
- Offline
- pedro3145
- Member
- 41 posts
- Joined: Feb. 2014
- Offline
- pedro3145
- Member
- 41 posts
- Joined: Feb. 2014
- Offline
Stalkerx777pedro3145Nick 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]
- anon_user_37409885
- Member
- 4189 posts
- Joined: June 2012
- Offline
- tamte
- Member
- 8882 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
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
FX Supervisor
Method Studios, NY
- mark
- Staff
- 2643 posts
- Joined: July 2005
- Offline
MartybNzpedro3145
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.
- SreckoM
- Member
- 379 posts
- Joined: Dec. 2006
- Offline
-
- Quick Links