[Sidefx-houdini-list] mantra "clusterThis" procedural geometry DSO - new version available - v1.4.4

Mark Story mstory at xion.org
Wed Feb 4 23:35:57 EST 2009

Greetings Earthlings,

New version (1.4.4) available:

* Added an optimization for when mantra generates deep shadow maps. The 
DSO has an option to write the instanced data to a temp file which is 
then read for each subsequent call from mantra. This is only available 
for the "generate all the geometry at once" method, since in the 
deferred instancing mode the geo instancing is controlled by mantra.

* Added simple CVEX processing for the instanced geometry. Point 
positions of the instanced geometry is passed to the VEX engine for 
further processing.


* CVEX: Presently the CVEX hook is just a simple call passing only point 
positions into the VEX code. The arrays that are used to call the CVEX 
code is currently a static array as this was a "proof of concept" test 
for the project. I need to put a little thought into the most efficient 
way to dynamically build the arrays to pass to the VEX code so as many 
attributes as desired to be processed in VEX can quickly be assembled 
and shipped off for some SIMD goodness. This will be coming along 
quickly as there's much to be gained by leveraging CVEX at render time.

* Deep Shadow passes: To optimize the process of generating deep shadow 
maps, the user can now choose to have a temporary geometry cache file 
stored which is then read by the DSO for each additional deep shadow map 
and the final pass that mantra calls before starting to render. You may 
also choose to not delete the file in case you would like to use the 
instanced geometry later in your pipeline.

 From Mark Elendt regarding why mantra calls a geo procedural for each 
light that gens a deep shad map:
"Consider generating an iso-surface. One light
really close to the iso surface, the other really far away. If you
generate a single piece of geometry for both views, then you'll end up
with either way way way too much detail or not enough...

Since the geometry can change based on the view, then we need to
regenerate the geometry each time."

* Motion Blur: The motion blur is implemented as a deformation blur, 
duplicating the points and then moving them. For now the velocity based 
motion blur has to wait. I'm thinking that there should be an option to 
move the points with CVEX code so the user can adjust the motion blur in 
any sort of way they would like.

 From Mark Elendt:
"That's a little tricky....
Right now, duplicate your geometry, then move one piece based on the 
velocity attribute."

Here's the current method for displacing the duplicated geometry to 
create motion blur for mantra:

       myPointAttributes.myMBPos[0] = myPointAttributes.myNewPos[0] - 
       myPointAttributes.myMBPos[1] = myPointAttributes.myNewPos[1] - 
       myPointAttributes.myMBPos[2] = myPointAttributes.myNewPos[2] - 

The example file shows a few ways of how to use the DSO but because of 
some pesky license problems, I'm presently not able to save a non-NC hip 
file (don't want to distribute a .hipnc file); shouldn't be too much 
longer, than I'll have more examples using the CVEX feature.

Next pass I hope to have better CVEX code, the curve instancing, maybe 
true volume instancing (though you can currently instance meta balls and 
render them as volumes), a lot more examples, a few pretty pictures, and ...

It time for a cleanup/modular dissection and code review ... :-)

Remember to be sure to replace the OTL as well as the DSO/DLL when 


More information about the Sidefx-houdini-list mailing list