Setting up Whitewater shader in MaterialX?
7887 26 8- arctiem
- Member
- 5 posts
- Joined: June 2022
- Offline
Hey guys, I'm trying to set up a whitewater shader to render my ww inside of Karma XPU since Karma CPU is taking too long, as I have over 20 million ww particles. The pyro shader works pretty well as a uniform volume shader, but I can't get the reflections you get from the default ww shader that has the PBR reflect node. Has anyone had any experience setting up the reflectivity node inside materialX? Or maybe a workaround?
- OV_Production
- Member
- 1 posts
- Joined: Feb. 2023
- Offline
- Lucaroe
- Member
- 16 posts
- Joined: March 2017
- Offline
- sniegockiszymon
- Member
- 67 posts
- Joined: June 2022
- Offline
- jsmack
- Member
- 8043 posts
- Joined: Sept. 2011
- Offline
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
- physixtential
- Member
- 11 posts
- Joined: Feb. 2020
- Offline
Is there any content anywhere on this? I'm hard stuck trying to make a bubble volume and foam/spray particles that will render in xpu. The materialx stuff is completely alien to me and looking through every node of the oceanprocedural materials so far seems to be the only clue what so ever about rendering anything to do with water in xpu.
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
The new Karma builder node is very similar to the principle shader unless you need something more specific which you can use also very similar to VEX shader, there ara a lot tutorials with bits of information on the Sidefx site, I hope that helps.
The thing that I could not find is how to mix volumes to standard shading like I could in the VEX version so I could have specular on the white water shader volume in XPU.
The thing that I could not find is how to mix volumes to standard shading like I could in the VEX version so I could have specular on the white water shader volume in XPU.
Edited by mzigaib - Jan. 28, 2024 21:14:46
- physixtential
- Member
- 11 posts
- Joined: Feb. 2020
- Offline
mzigaibYa I've managed to get things going with karma material builder and brute force instancing a disc on to millions of points since for some reason we can't render points as discs. It is extremely heavy and I'm having to sit around waiting for karma renderer to cook somewhere beetween 1 and 20 frames before it just silently stops rendering. Then I change the start frame up to however far it got and render again.
The new Karma builder node is very similar to the principle shader unless you need something more specific which you can use also very similar to VEX shader, there ara a lot tutorials with bits of information on the Sidefx site, I hope that helps.
The thing that I could not find is how to mix volumes to standard shading like I could in the VEX version so I could have specular on the white water shader volume in XPU.
I wish I'd have known how experimental and unstable and undeveloped all this was before I invested so much. I should have just gone with redshift and the old working rendering methods.
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
- physixtential
- Member
- 11 posts
- Joined: Feb. 2020
- Offline
mzigaibWhy is it necessary to cache the instances?
Don't despair!
You can render discs by the way, as for instancing anything make sure you cache your instances on disk, better yet if you cache as USD there is no faster read cache than this also make sure to import pack primitives as "point instancer".
The option you show for points as discs does not work in Karma XPU, unless they changed it in the last couple weeks. That only works in Karma XPU.
I'm also confused because you are talking about instancing but also showing render points as discs. You only need instancer if you can't use render points as discs.
"import pack primitives as "point instancer"" - Where is this? What does it do?
Edited by physixtential - Feb. 19, 2024 08:19:15
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
-Why is it necessary to cache the instances?
It is not but it is always more efficient not just for instances, my suggestion for best efficiency on Solaris with USD is to have everything cached in USD before going to render specially if it is a heavy scene, doing so you wont have unnecessary extra calculations on render time and USD caches are much faster than bgeos besides other benefits.
-The option you show for points as discs does not work in Karma XPU.
It does I just showed you and for some time now.
-I'm also confused because you are talking about instancing but also showing render points as discs.
I am not instancing anything it is just points rendered in XPU as discs
-"import pack primitives as "point instancer" - Where is this? What does it do?
It makes Solaris see your packed as real instances on points so it is much more efficient than have USD native instances that is a kind of different concept, so if your objects are blue on the graph tree they are individual instanced objects not point instances, I hope that makes sense.
Summarizing: native instance != point instancer.
It is not but it is always more efficient not just for instances, my suggestion for best efficiency on Solaris with USD is to have everything cached in USD before going to render specially if it is a heavy scene, doing so you wont have unnecessary extra calculations on render time and USD caches are much faster than bgeos besides other benefits.
-The option you show for points as discs does not work in Karma XPU.
It does I just showed you and for some time now.
-I'm also confused because you are talking about instancing but also showing render points as discs.
I am not instancing anything it is just points rendered in XPU as discs
-"import pack primitives as "point instancer" - Where is this? What does it do?
It makes Solaris see your packed as real instances on points so it is much more efficient than have USD native instances that is a kind of different concept, so if your objects are blue on the graph tree they are individual instanced objects not point instances, I hope that makes sense.
Summarizing: native instance != point instancer.
Edited by mzigaib - Feb. 19, 2024 16:19:52
- jsmack
- Member
- 8043 posts
- Joined: Sept. 2011
- Offline
mzigaib
-The option you show for points as discs does not work in Karma XPU.
It does I just showed you and for some time now.
-I'm also confused because you are talking about instancing but also showing render points as discs.
I am not instancing anything it is just points rendered in XPU as discs
Points as discs is not supported by XPU--it's not possible with the way the ray tracing engine works to have discs that always face the incoming ray. I could see oriented discs being supported but not camera/ray facing discs.
- physixtential
- Member
- 11 posts
- Joined: Feb. 2020
- Offline
mzigaibYou can happily set points as discs, but it won't do it.
-Why is it necessary to cache the instances?
It is not but it is always more efficient not just for instances, my suggestion for best efficiency on Solaris with USD is to have everything cached in USD before going to render specially if it is a heavy scene, doing so you wont have unnecessary extra calculations on render time and USD caches are much faster than bgeos besides other benefits.
-The option you show for points as discs does not work in Karma XPU.
It does I just showed you and for some time now.
-I'm also confused because you are talking about instancing but also showing render points as discs.
I am not instancing anything it is just points rendered in XPU as discs
-"import pack primitives as "point instancer" - Where is this? What does it do?
It makes Solaris see your packed as real instances on points so it is much more efficient than have USD native instances that is a kind of different concept, so if your objects are blue on the graph tree they are individual instanced objects not point instances, I hope that makes sense.
Summarizing: native instance != point instancer.
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
- physixtential
- Member
- 11 posts
- Joined: Feb. 2020
- Offline
- brians
- Staff
- 531 posts
- Joined: May 2019
- Offline
Hi all
Sorry for the lack of replies on this thread. I'm not a whitewater expert, so I'll ask a few at SideFX who are and get back to you.
regarding disks, XPU cannot render points as disks but we plan to add this capability soon.
Hopefully we can get view-facing as well as oriented. It is conceptually possible to orient the disk to be facing the incoming ray, but I'm not sure what happens with things like reflection or shadow rays. Some hackery might be needed in that regard.
Sorry for the lack of replies on this thread. I'm not a whitewater expert, so I'll ask a few at SideFX who are and get back to you.
regarding disks, XPU cannot render points as disks but we plan to add this capability soon.
Hopefully we can get view-facing as well as oriented. It is conceptually possible to orient the disk to be facing the incoming ray, but I'm not sure what happens with things like reflection or shadow rays. Some hackery might be needed in that regard.
- mzigaib
- Member
- 978 posts
- Joined: April 2008
- Offline
physixtentialmzigaibYes. For example, they all get motion blur if I set motion blur on the very same geometry settings. Discs just simply don't work in xpu. I think you are using cpu.
In the geometry settings LOP node are you pointing to the right primitive?
Yes you are correct I was using CPU my mistake.
But instancing circles on points should not be that heavy try to use point instancer.
- brians
- Staff
- 531 posts
- Joined: May 2019
- Offline
-
- Quick Links