Will Karma XPU support mixing more than two MtlX materials?

   4921   17   6
User Avatar
Member
14 posts
Joined: May 2018
Offline
I realized in the presentations done so far for the Houdini 20 launch, it was mentioned that Karma XPU only supports mixing between 2 MtlX Standard Surface shaders. Any more and it turns into a regular greyshader. Meanwhile, mixing more than 2 shaders works flawlessly in Karma CPU.

As an example I've ran into this limitation while trying to use the new Hex-Tiled Triplanar texturing workflow, where I'm trying to mix multiple PBR materials on a single mesh procedurally. I can already tell that this will be a reoccurring bottleneck for me, and while mixing the individual PBR textures (albedo, roughness, displacement etc) together before inputting into a single Standard Surface shader works, it doesn't give nearly as nice of a result as mixing multiple shaders in Karma CPU. Attaching screenshots to give an example of what I'm talking about.


So my question is, is it in the plans to work on supporting more shaders in a single material for XPU? And if so would it be expected to be far down the line or could it be patched in fairly soon? Maybe it's hard to say but I would love any possible insights on this.
Edited by MCJamZam - Nov. 15, 2023 22:12:54

Attachments:
CPU.png (2.5 MB)
XPU.png (2.1 MB)

User Avatar
Member
59 posts
Joined: Jan. 2016
Offline
Hey- Big feature request for me as well. In the interim I do think cpu and xpu should be similar enough quality wise? Subsurface isn’t a good but those rocks should looks just as good in both cpu and xpu-.
I’m doing something similar at the moment- as you said having to create mix nodes for every texture input is 4-5 times slower than just mixing displacement and bsdf. My
workout around is a python code that I haven’t finished yet. Gist of it is you just setup up the look using the diffuse channel- if you like the look you then run a python shelf tool that duplicates the two diffuse files nodes and the mmix node and just swaps out the file input for the additional maps- it also connects the mix to the shader input if you want it to do so. If I have the time to finish this I’ll send these python snippets your way. Alternatively if your code handy you can repurpose a lot of Adrian Lamberts python tutorial- I already have a python code that duplicates the megascans mantra output and converts it to a triplanar hex shader. Good luck!
User Avatar
Staff
530 posts
Joined: May 2019
Offline
MCJamZam
So my question is, is it in the plans to work on supporting more shaders in a single material for XPU? And if so would it be expected to be far down the line or could it be patched in fairly soon? Maybe it's hard to say but I would love any possible insights on this.

Although this feature might seem trivial, sadly it requires a very large amount of work under the hood. So although we do have plans to address this, it won't be happening in the immediate term. The current design means we need to hard-code common combinations of BSDFs.
User Avatar
Member
50 posts
Joined: Aug. 2021
Offline
It would be cool to be able to set some geometries to render with CPU and some with XPU without having to do that manually (unless this exists already?). This would allow for some VEX-based materials (like ocean shader) to be used in a predominately XPU-rendered scene.
User Avatar
Member
14 posts
Joined: May 2018
Offline
brians
Although this feature might seem trivial, sadly it requires a very large amount of work under the hood. So although we do have plans to address this, it won't be happening in the immediate term. The current design means we need to hard-code common combinations of BSDFs.

Thanks for the insight, great to know. It's unfortunate but understandable - I know Karma XPU is very different from Karma CPU under the hood so it makes sense that it takes a while to get some of these more advanced features implemented.

I suppose I'll just have to invest in a better CPU rather than relying too heavily on XPU for the moment
User Avatar
Member
271 posts
Joined: Aug. 2018
Offline
brians
Although this feature might seem trivial, sadly it requires a very large amount of work under the hood. So although we do have plans to address this, it won't be happening in the immediate term. The current design means we need to hard-code common combinations of BSDFs.

Just a +1 to say that this is a significant issue for me as well.
User Avatar
Member
8 posts
Joined: May 2017
Offline
This is a major bottleneck for me as well. It would be great do see some development here soon otherwise I wont be able to use karma xpu on commercial projects based on that single limitation
User Avatar
Staff
530 posts
Joined: May 2019
Offline
Mike_A
Just a +1 to say that this is a significant issue for me as well.
Marco Fontan
This is a major bottleneck for me as well. It would be great do see some development here soon otherwise I wont be able to use karma xpu on commercial projects based on that single limitation

Thanks for letting us know.
User Avatar
Member
67 posts
Joined: June 2022
Offline
Marco Fontan
This is a major bottleneck for me as well. It would be great do see some development here soon otherwise I wont be able to use karma xpu on commercial projects based on that single limitation

Hey I would like to know why this is so crusial for you that you cant use karma because of that. You can mix everything before shader unless you are using the same type of shader. I've started this question deeper here https://www.sidefx.com/forum/topic/93336/ [www.sidefx.com]
Edited by sniegockiszymon - Dec. 1, 2023 13:45:42
User Avatar
Member
236 posts
Joined: March 2023
Offline
sniegockiszymon
Hey I would like to know why this is so crusial for you that you cant use karma because of that. You can mix everything before shader unless you are using the same type of shader. I've started this question deeper here https://www.sidefx.com/forum/topic/93336/ [www.sidefx.com]


Personnally, it simple : it limit the ability to create 'smart material'

while you could try to to emulate complex material mixing by doing it before the shader itself (by blending roughness map, diffuse, etc), it frankly a limitation as it counter intuitive and make little sense.
take the exemple of a complex terrain, you have a material for a leaf ground, dirt, mud, sand, etc, individually, they have all their own complex logic, as an artist, I want to simply load each of these material individually and start painting them onto the mesh.
if you can't blend these material, you'd be stuck having to decompose all of them, and try to rebuild them using a single material node, creating a absolutely nightmarish network of node (pretty much like what your showing in the other topic).
where as with the individual material, you can just connect them into a plug & play material blending node and be done with it.

the terrain is one exemple, I need it for my character that are in most case, very alien, and need different preset of material that I wouldn't want to drive with map alone.

I would bet that most people that want material blending come from redshift, where material blending is an amazing feature that I personally abused and hardly can't live without now.
I feel severely limited from not being able to do it on karma, spending much more time trying to create complex material from the map alone and creating overly complicated network because of it.
Edited by ASquirrel - Dec. 1, 2023 13:59:02
Head of Pipeline @ LightVFX
User Avatar
Member
67 posts
Joined: June 2022
Offline
Jacquesf
Personnally, it simple : it limit the ability to create 'smart material'

while you could try to to emulate complex material mixing by doing it before the shader itself (by blending roughness map, diffuse, etc), it frankly a limitation as it counter intuitive and make little sense.
take the exemple of a complex terrain, you have a material for a leaf ground, dirt, mud, sand, etc, individually, they have all their own complex logic, as an artist, I want to simply load each of these material individually and start painting them onto the mesh.
if you can't blend these material, you'd be stuck having to decompose all of them, and try to rebuild them using a single material node, creating a absolutely nightmarish network of node (pretty much like what your showing in the other topic).
where as with the individual material, you can just connect them into a plug & play material blending node and be done with it.

the terrain is one exemple, I need it for my character that are in most case, very alien, and need different preset of material that I wouldn't want to drive with map alone.

I would bet that most people that want material blending come from redshift, where material blending is an amazing feature that I personally abused and hardly can't live without now.
I feel severely limited from not being able to do it on karma, spending much more time trying to create complex material from the map alone and creating overly complicated network because of it.

But this network is complex because of procedural material not because of blending. You have just 3 mixing node instead of one (for diffuse,roughness,disp) maybe its a little bit more inconvenient but its not THAT big deal, especialy that you get better outcome when values are between 0-1
User Avatar
Member
14 posts
Joined: May 2018
Offline
sniegockiszymon
Hey I would like to know why this is so crusial for you that you cant use karma because of that. You can mix everything before shader unless you are using the same type of shader. I've started this question deeper here https://www.sidefx.com/forum/topic/93336/ [www.sidefx.com]

I've demonstrated why in my original post here. If you look at the screenshots you can see the difference between the two methods, one using Karma CPU and mixing multiple materials, and the other using XPU mixing each individual PBR texture before going into a single material.

Simply put, it gives different results and the one in Karma CPU looks much more natural, with natural looking gradients between materials, whereas the XPU method has sharp transitions, less details and generally looks less natural to me. Not to mention, as Jacquesf mentioned, it's just easier to mix finished materials rather than multiplying each mix node by however many PBR textures you're using.

To be clear, in both cases I used exactly the same masks, the only difference is where in the node tree I placed the mix nodes. This is as clear of an example as I can give you.

All in all this is a major workflow bottleneck and I'm actually in the process of transitioning to a dedicated procedural texturing software, because I feel this Karma/MtlX workflow is currently limiting me and ultimately reducing my final render quality.
Edited by MCJamZam - Dec. 1, 2023 14:20:39
User Avatar
Member
236 posts
Joined: March 2023
Offline
the thing is, it not just for using texture map. if you use texture material, sure, it gonna stay fairly simple, even if you try to mix stuff around.

however, I build fully procedural material, imagine substance material but directly done as a render material, you'll understand why I would want something like material blending when one single material already approach hundred of node.

I dare you to try trying to blend them inside the material itself.
Edited by ASquirrel - Dec. 1, 2023 14:15:36
Head of Pipeline @ LightVFX
User Avatar
Member
67 posts
Joined: June 2022
Offline
MCJamZam
sniegockiszymon
Hey I would like to know why this is so crusial for you that you cant use karma because of that. You can mix everything before shader unless you are using the same type of shader. I've started this question deeper here https://www.sidefx.com/forum/topic/93336/ [www.sidefx.com]

I've demonstrated why in my original post here. If you look at the screenshots you can see the difference between the two methods, one using Karma CPU and mixing multiple materials, and the other using XPU mixing each individual PBR texture before going into a single material.

Simply put, it gives different results and the one in Karma CPU looks much more natural, with natural looking gradients between materials, whereas the XPU method has sharp transitions, less details and generally looks less natural to me. Not to mention, as Jacquesf mentioned, it's just easier to mix finished materials rather than multiplying each mix node by however many PBR textures you're using.

To be clear, in both cases I used exactly the same masks, the only difference is where in the node tree I placed the mix nodes. This is as clear of an example as I can give you.

All in all this is a major workflow bottleneck and I'm actually in the process of transitioning to a dedicated procedural texturing software, because I feel this Karma workflow is currently limiting me and ultimately reducing my final render quality.
Hmm now Im wondering whats happeing here because it looks like different mask, maybe its looking worse because of cpu/xpu difference or something in between doesnt work on xpu. Please share results after you mix those textures in sepearate soft because in my experience it always looked better mixing different textutres separately when I have values between 0-1
Edited by sniegockiszymon - Dec. 1, 2023 14:21:42
User Avatar
Member
66 posts
Joined: May 2019
Offline
Just a +1 to say that this is a significant issue for me as well.

+1 for this as well.
Generalist. Transforming still images to 3D animation 🔮
Socials: https://linktr.ee/AnimGraphLab [linktr.ee]
User Avatar
Member
16 posts
Joined: Feb. 2019
Offline
Has there been any development on this limitation? +1 for us as well, not being able to mix more than 2 shaders is a deal breaker for building complex materials in Karma.
User Avatar
Member
185 posts
Joined: Feb. 2017
Offline
frame_48
Has there been any development on this limitation? +1 for us as well, not being able to mix more than 2 shaders is a deal breaker for building complex materials in Karma.

Nope,H20.5 still has this limitation.
User Avatar
Member
40 posts
Joined: Oct. 2014
Offline
Yerh, really need to be able to mix more materials
  • Quick Links