Jump to content

BSDF type and image plane


Recommended Posts

Hi Guys !

 

I am encountering the exact same problem as this post

http://forums.odforce.net/topic/17510-export-bsdf-output-as-image-plane/?hl=%2Bbsdf+%2Bimage+%2Bplane

 

My goal is to understand how can i connect my parameter node to output and separate shading component (diffuse/spec/reflection/sss/emission ... ) into different image plane (AOV).

 

To connect my parameter i need a proper Color Type. So my question is how can i convert a Bsdf Type into a color type.

 

The BSDF type is pretty vague in my head i have no precise idea of what it is and what it contain so any info on this would be cool.

 

To go from a BSDF output to a vector color mantra use the physically based lighting node with F input and all output plug in Cf.

 

I have try to connect the reflection BSDF output to > a physically based lighting to a > parameter but it doesn't work.

 

How would you isolate diffuse / sss / specular / refection in a mantra shader in a clean way.

 

Many thanks for your time !

 

Cheers

 

E

Edited by sebkaine
Link to comment
Share on other sites

Hey monsieur Mouillet, guess who I am ? :)

If you want to isolate the different shading components from a bsdf input, you can also use a "direct lighting" node. It will separate your bsdf input into different vectors for diffuse, reflect, refract, etc, then you will be able to plug each of them in a parameter node.

But if you're using a mantra surface shader, you can also get the separate shading components using the Images planes presets, "direct_reflect", "indirect_reflect", etc will work in PBR as well.

test.hip

Edited by insania
Link to comment
Share on other sites

I've made a simple example in the scene attached above. In the vopmaterial1 shader, I've connected my bsdf output from the surfaceModel node to a direct Lighting node, and then plugged the reflect vector output to a "test" parameter.

Edited by insania
Link to comment
Share on other sites

Many thanks for your help insania ! i need a clue are you working in paris uk or ca ? :) i would say that you are Charles or Marc but .... not sure ...

 

Well the problem is that indirect_reflect give you the reflection of all the element in your scene that have a mantra shader assign.

My goal is to be able to output aov on a shader basis. for exemple only the object that have shader_01 assign will output their reflection.

 

i have make some little test and i can't find a good solution. i have attach a scene to describe the problem

 

on my machine i get the following result with the posted scene

Ref    : beauty render only = 0.32 s to render

test 1 : beauty + indirect_reflect AOV = 0.33s

test 2 : beauty + AOV_reflection_v01 (using direct lighting node) = 0.44s

test 3 : beauty + AOV_reflection_v02 (using physically based lighting node) = 0.40s

test 4 : beauty + AOV_reflection_V03 (by isolating the indirect_comp vector array value) = 0.55s

 

so test 1 give coherent result the render time is nearly the same, so there is no extra computing houdini isolate the temporary value and writte what is store in the buffer.

 

test 2 and 3 show that if you use direct lighting or physically based lighting it comes with an extra cost so houdini is not storing something that exist in the buffer , it looks to operate an extra operation to convert the bsdf to a color. cost is expensive about 35% extra render time

 

test 4 is weird as i am sure i don't ask any extra computing i just get the result of the indirect_comp node and i isolate the second component of the array, the indirect_reflect. but time is the longest of all my test , so i can't explain this extra cost.

 

So to sum up i am unable to isolate the component i want on a shader basis at NO extra render time or minor one ...

If you have solution i buy you a beer next time i see you ...

 

 

Cheers

 

E

aov.hip

Edited by sebkaine
Link to comment
Share on other sites

Well the problem is that indirect_reflect give you the reflection of all the element in your scene that have a mantra shader assign.

My goal is to be able to output aov on a shader basis. for exemple only the object that have shader_01 assign will output their reflection.

Well, the "indirect_reflect" preset is working just because there's a indirect_reflect parameter node in the shader (surfaceModel>indirect_reflect). So if you want to have the reflection only for a specific shader, you just have to add another parameter next to the already existing "indirect_reflect" parameter node, and name it differently. You specify this name as VEX variable in the mantra node, and it will works, no extra render time for me.

And yes, I'm Marc :)

Si tu passes par IMG, viens nous faire coucou aux VFX !

Edited by insania
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...