H11 material shader builder, how to access shaders inside?

   3826   4   0
User Avatar
Member
8592 posts
Joined: July 2007
Offline
i am used to work with individual shaders (surface, light, disp, …)
it was ok to have them inside material node since i had access to them anyway
but in H11 how can i access for example displacement shader if it is in Material Shader Builder?

i am thinking of submitting a RFE to be able to reference Material Shader Builder SHOP in shader rendering parameters like Displacement Shader, Light Shader, … and it will automatically use that corresponding of material from inside if exists

but since i am very new to this H11 pipeline i am first asking if it is somehow possible or it is another preferred way
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
4140 posts
Joined: July 2005
Offline
I'm not exactly sure what you mean by ‘accessing’ the different contexts, but if you check the docs on Working with VOPs [sidefx.com] it mentions:

A material network contains an “output” node for each shading context (for example, surface_output, displacement_output, light_output, fog_output). Whatever goes into these nodes defines the output of the shader.

The output nodes feed into a final “collect” node. You can create multiple output nodes and Switch between them prior to the collect node if necessary.

Does that help with what you want to do?

Cheers,

J.C.
John Coldrick
User Avatar
Member
8592 posts
Joined: July 2007
Offline
to help you understand what i am after here is my workflow

in H10
i have several material nodes, each of them contains multiple shaders Surface, Displace, Properties, …

on the objects i am using rendering parameters from gear menu like Surface Shader(shop_surfacepath), Displacement Shader(shop_displacepath), Rendering Properties(shop_properties path)
in this parameters i am referring individual shaders from my Material nodes
I am leaving Material parameter empty so the objects is using individual shaders

the reason is my render passes
for example
i create new Take for AmbientOcclusion pass
and override just Surface Shader path for my objects with my AO surface shader
so the objects will use displacement of its original Material

now in H11
i can do this(much like h10 way) if i use individual shader builder SHOPs like Surface Shader builder, Displace Shader Builder, …
but with Material Shader Builder i can create complex material with all shaders inside of it, but i have no simple way of overriding just displace or surface part or have I?
switching inside is not the solution
i am not after building big material blackbox, but for modularity H10 and below has

or in other way, what is expected workflow for overriding individual shaders of Material Shader Builder?
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Staff
1449 posts
Joined: July 2005
Offline
you can specify the material node itself (rather than the specific context shader node inside the material) in the shop_surfacepath (or shop_displacmentpath) parameter. These parameters represent specific shading context, so Houdini knows which shader to use from within the material node. This worked like this in H10 and it still does in H11.

You won't see the material nodes in the operator browser tree, since these parameters expect an explicit shader shop node (that's a bug), but you can still type in the material node path in these parameters.
User Avatar
Member
8592 posts
Joined: July 2007
Offline
thanks rafal, i assumed it should work like this i was just confused by material SHOPs not showing in the browser
i am glad to hear that this works
Tomas Slancik
FX Supervisor
Method Studios, NY
  • Quick Links