Creating BDSF for PBR

   12861   14   3
User Avatar
Member
18 posts
Joined: May 2010
Offline
How would one go about starting to create a bsdf vop? I'm looking through the docs and can only find how to add, multiply etc primitive bsdfs. But from the following thread on odforce it seems it's possible to start one from scratch? http://forums.odforce.net/index.php?/topic/9590-pbr-snack/page__hl__bsdf__fromsearch__1 [forums.odforce.net] I'm confused. Mainly since the docs point to the primitive bsdf's. http://www.sidefx.com/docs/houdini10.0/vex/pbr [sidefx.com]

Speaking of the primitive bsdf's… where are they in H11? thanks in advance. If it's possible the end goal I want to reach would be to implement the ggx lighting model.
User Avatar
Member
4132 posts
Joined: July 2005
Offline
Currently its not possible to create BSDFs on your own, either via VEX or the HDK. There has been talk that in future versions of Houdini this may be possible but the VEX language itself would need to be improved in order to facilitate this.

The shading BSDFs are here
http://www.sidefx.com/docs/houdini11.0/vex/pbr [sidefx.com]

The full list is-

Shading BSDFs
ashikhmin
blinn
cone
diffuse
matchvex_blinn
matchvex_specular
phong
phonglobe
specular

Utility BSDFs
interpolate
lerp
switch

Wire/Curve BSDFs
wireblinn
wirediffuse

Volume BSDFs
isotropic
henyeygreenstein

If it's possible the end goal I want to reach would be to implement the ggx lighting model.

What's the ggx lighting model? Linky?
if(coffees<2,round(float),float)
User Avatar
Member
18 posts
Joined: May 2010
Offline
Thanks for the clarification.

Here's a link describing the GGX model. http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf [cs.cornell.edu]

Sony-Imageworks tends to use this model allot along with Beckmann and Ashikhmin.
User Avatar
Member
519 posts
Joined:
Offline
Wolfwood,

what's the culprit from keeping people to write BSDF's using vex and the hdk? (Gory technical details, please!)

Cheers,
Hans
User Avatar
Member
938 posts
Joined: July 2005
Offline
Well… even though you can't currently define your own bsdf object, you can still define a bunch of (VEX) functions that mimic the features of a built-in bsdf. That is: implement your own versions of sample_bsdf(), eval_bsdf(), albedo(bsdf,<dir>), etc., and then use them in a Multiple Importance Sampling setting, similar to what's happening in pbrpathtrace.h (which you would also need to write yourself, but you can use that header as a guide).

I'm coincidentally in the middle of trying just that (for a Cook-Torrance based model) and it seems to be working pretty well so far (very efficient sampling), though I still have to tame some of the weights in the MIS portion :?
Mario Marengo
Mr. X [mrxfx.com]
User Avatar
Member
4132 posts
Joined: July 2005
Offline
Mario Marengo
I'm coincidentally in the middle of trying just that (for a Cook-Torrance based model) and it seems to be working pretty well so far (very efficient sampling), though I still have to tame some of the weights in the MIS portion :?

From what I gather (pun!) on reading the GGX paper, the BRDF component of the GGX BSDF is the same as the Cook-Torrance except they divide by 4 instead of a factor of PI.

The BTDF is a bit different tho. @Rtalz, do you guys use the full BSDF or just the BRDF component?
if(coffees<2,round(float),float)
User Avatar
Member
938 posts
Joined: July 2005
Offline
Wolfwood
From what I gather (pun!) on reading the GGX paper, the BRDF component of the GGX BSDF is the same as the Cook-Torrance except they divide by 4 instead of a factor of PI.

I don't think so. The difference is in the distribution (the “D” term), and all 3 versions are pretty different (as are their shapes). All the D's have a 1/PI term that comes from normalizing to projected solid angle (an extra cos(theta) term in the integral => Solve, which the original Cook-Torrance “D” didn't have, so the 1/PI term was missing there). And the 1/4 or 1/4(w.h) factor (for the whole BRDF, not the D term) comes from mapping an “h-distribution” (a distribution of halfway vectors about n) to an “o-distribution” (a distribution about the outgoing direction).

…at least that's how I understand it at the moment
Mario Marengo
Mr. X [mrxfx.com]
User Avatar
Member
4132 posts
Joined: July 2005
Offline
Mario Marengo
I don't think so….

And that's what I get for just skimming it. ops: Apologies for the misinformation.
if(coffees<2,round(float),float)
User Avatar
Member
1056 posts
Joined:
Offline
Mario Marengo
I'm coincidentally in the middle of trying just that (for a Cook-Torrance based model) and it seems to be working pretty well so far (very efficient sampling), though I still have to tame some of the weights in the MIS portion :?

ooo, i hope this makes an appearance on the exchange

jason
HOD fx and lighting @ blackginger
https://vimeo.com/jasonslabber [vimeo.com]
User Avatar
Member
4140 posts
Joined: July 2005
Offline
*cough*

Probably not.

JC
John Coldrick
User Avatar
Member
1056 posts
Joined:
Offline
*cough* damit*cough* *cough*
HOD fx and lighting @ blackginger
https://vimeo.com/jasonslabber [vimeo.com]
User Avatar
Member
11 posts
Joined: March 2011
Offline
Does anybody know if the henyey-greenstein Volume BSDFs is able to do forward scattering and adding backward scattering? Because thats what the “double henyey-greenstein” does.
“The double Henyey-Greenstein phase function is the sum of two Henyey-Greenstein phase functions, one being forward scattering, and the other being backward scattering.” http://physics.nist.gov/Divisions/Div844/facilities/scatmech/html/phase.htm [physics.nist.gov]
User Avatar
Member
22 posts
Joined: June 2008
Offline
rtalz
Here's a link describing the GGX model. http://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf [cs.cornell.edu]

Sony-Imageworks tends to use this model allot along with Beckmann and Ashikhmin.

Check this out: http://www.youtube.com/watch?v=Mopk3gqisVI [youtube.com]

Just made an implementation of this paper. GGX specular is so cool!

Attachments:
spec_comparison_bunnies_lowRes.jpg (131.9 KB)

TD @ Mr.X Inc
User Avatar
Member
561 posts
Joined: June 2006
Offline
I hope that in H12 we can implement custom BSDF's.
Feel The Knowledge, Kiss The Goat!!!
http://www.linkedin.com/in/alejandroecheverry [linkedin.com]
http://vimeo.com/lordpazuzu/videos [vimeo.com]
User Avatar
Member
18 posts
Joined: May 2010
Offline
sergey_sh
Check this out: http://www.youtube.com/watch?v=Mopk3gqisVI [youtube.com]

Just made an implementation of this paper. GGX specular is so cool!


GGX, how I love you. Great work.
  • Quick Links