Delayed Load and per-primitive shaders

   8468   13   2
User Avatar
Member
35 posts
Joined: July 2005
Offline
Hi
I have a problem with rendering objects using Delayed Load procedural.
For example i have some geometry with 10 shaders attached to it by per-primitive basis.
I write this geometry to .bgeo file. Then i use Delayed Load procedural to render it and i get result with no shaded geometry. Why? But if attach 1 shader in object level everything is ok.
What should i do if i want to render geometry using Delayed Load with many shaders attached to it.
User Avatar
Member
2199 posts
Joined: July 2005
Online
try turning on “declare all shops” in the rop node. ( H8 )

not sure about H9 as i haven't used it yet.
The trick is finding just the right hammer for every screw
User Avatar
Member
80 posts
Joined: July 2005
Offline
I noticed this as well… Looks like a bug to me.

Edit: there's a button in the Render tab of the mantra rop labeled Force VEX Shader Embedding, which makes this work, sorta. It'll work as long as the shader is in your hipfile. In h8 there was a way to save the geometry with the shader definition, which means you didn't need to have an instance of the shader in your scene.
Edited by - Oct. 8, 2007 13:25:21
User Avatar
Member
35 posts
Joined: July 2005
Offline
In H9 if i turned on “Force VEX Shader Embedding” it doesn`t work tough.
User Avatar
Staff
2589 posts
Joined: July 2005
Offline
Simon
try turning on “declare all shops” in the rop node. ( H8 )

not sure about H9 as i haven't used it yet.

Hmm… This button seems to be missing in H9.

I've added support for this for the next build of Houdini. The changes were all in Python scripts in $HH/soho. Though, to take advantage of this, you'll have to install the new parameter “Declare All Materials” (via. Edit Rendering Parameters on the output driver)

Edit: Note that the "Force Embedding of VEX' means that the VEX code in the .hip file should override any OTLs (or missing OTLs) on remote machines. It makes the IFD a little more portable (though larger).
User Avatar
Member
12422 posts
Joined: July 2005
Online
Would it make sense to also be able to specify a property per SHOP as to whether it gets embedded or declared?
Jason Iversen, Technology Supervisor & FX Pipeline/R+D Lead @ Weta FX
also, http://www.odforce.net [www.odforce.net]
User Avatar
Member
2199 posts
Joined: July 2005
Online
That would certainly be handy if possible. One of the downsides to “declare all shops” is the amount of time it spends embedding shaders that aren't used.
We have shader otls in our master hip files with a 1000 plus shaders in them, with declare all shops on it has to process every shader before generating an ifd even though a lot of times only a tiny percentage of the shaders are in use at any one time, and an even smaller number are only applied at prim level.
The trick is finding just the right hammer for every screw
User Avatar
Staff
2589 posts
Joined: July 2005
Offline
Simon
That would certainly be handy if possible. One of the downsides to “declare all shops” is the amount of time it spends embedding shaders that aren't used.
We have shader otls in our master hip files with a 1000 plus shaders in them, with declare all shops on it has to process every shader before generating an ifd even though a lot of times only a tiny percentage of the shaders are in use at any one time, and an even smaller number are only applied at prim level.

There are two approaches to selection
1) Look for a parameter on a SHOP to force export
2) Have a bundle of SHOPs on the output driver

The problems with (1) are that you end up having to evaluate parameters on every SHOP (not a huge deal). But the other problem is differentiating between this parameter and an actual shader parameter for the SHOP.

So, I think that (2) is probably the easiest route to go. I'll see about trying to fix this today. It should be fairly straight-forward.

Hmm… Apparently, there isn't any HOM support for bundles, which does throw a wrench in the works.

I'll have to have a closer look.
User Avatar
Member
2199 posts
Joined: July 2005
Online
The nice thing about the way it works at present is its a no brainer, it always works its just slow.
I assume if you do set up bundle support that leaving the bundle empty would default to what it does now and it would just dump everything into the ifd. That way we could choose between setup time and render time as the pay-off.
The trick is finding just the right hammer for every screw
User Avatar
Member
35 posts
Joined: July 2005
Offline
mark
I've added support for this for the next build of Houdini. The changes were all in Python scripts in $HH/soho. Though, to take advantage of this, you'll have to install the new parameter “Declare All Materials” (via. Edit Rendering Parameters on the output driver)
Good news!
Thank you Mark.
User Avatar
Member
154 posts
Joined: July 2005
Online
Hey

Could anyone tell me why this Delayed Read file isnt working as it should - with shader assignment, it loads the geom, but forgets the shader assignment.

I pretty much do the same thing in H8 and it works fine, but in h9 it doesnt ?

I can only scratch my head and think its a bug, but from what is said above, i must be missing a step.

thanks in advance

Brian

Attachments:
delayed.hip (383.4 KB)

User Avatar
Member
1533 posts
Joined: March 2020
Offline
any help on Brian's question? i still can't get delayed read to render with my shaders…

thx
jason
HOD fx and lighting @ blackginger
https://vimeo.com/jasonslabber [vimeo.com]
User Avatar
Staff
2589 posts
Joined: July 2005
Offline
aracid
Hey

Could anyone tell me why this Delayed Read file isnt working as it should - with shader assignment, it loads the geom, but forgets the shader assignment.

I pretty much do the same thing in H8 and it works fine, but in h9 it doesnt ?

I can only scratch my head and think its a bug, but from what is said above, i must be missing a step.

thanks in advance

Brian

Sorry to take so long to reply. It slipped from my radar. Thanks for the reminder jason|slab :-)

This was a subtle one. Took a little digging to discover that you had assigned the surface SHOP (/shop/material1/v_polka) as the material.

However, the “Declare All SHOPs” will declare the material (the entire material), /shop/material1.

So, when mantra tries to resolve /shop/material1/v_polka, it can't find it since the material was specified as /shop/material1.

Does that make sense, if it doesn't I can try to expand. As I said, it's a pretty subtle issue.
User Avatar
Member
1533 posts
Joined: March 2020
Offline
hey mark

thx for the reply, it's working great now that we are using materials!

jason
HOD fx and lighting @ blackginger
https://vimeo.com/jasonslabber [vimeo.com]
  • Quick Links