I'm trying create henyeygreenstein phase bsdf using cvex_bsdf() without any luck…
henyeygreenstein_eval and henyeygreenstein_sample functions avialable in houdini/vex/CVex directory in both compiled and vfl form, they already imported as shoptypes in standard houdini/otls/OPlibShopVMantra.otl
but this construction in surface shader:
$f = cvex_bsdf(“henyeygreenstein_eval”, “henyeygreenstein_sample”, “label”, “”, “phase”, 0.5);
doesn't work. No errors, just rendering black image.
If i change it to this (which i dont know where coming from):
$f = henyeygreenstein(0.5,“label”,“”);
Everything works as expected.
Please provide any working example of cvex_bsdf usage!
[SOLVED] cvex_bsdf doesn't work for me
4019 3 1- mlesin
- Member
- 176 posts
- Joined: 5月 2006
- Offline
- wolfwood
- Member
- 4271 posts
- Joined: 7月 2005
- Offline
You need to provide a label, it can't be blank otherwise it won't run.
$f = cvex_bsdf(“henyeygreenstein_eval”, “henyeygreenstein_sample”,
“label”, “volume”, “phase”, 0.5);
For example here is one of the ones we use in production-
$f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, “reflect”,
“ng”, $tnN,
“alpha”, $alpha);
There is a builtin heneygreenstein which is why the second example you provided works.
$f = cvex_bsdf(“henyeygreenstein_eval”, “henyeygreenstein_sample”,
“label”, “volume”, “phase”, 0.5);
For example here is one of the ones we use in production-
$f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, “reflect”,
“ng”, $tnN,
“alpha”, $alpha);
There is a builtin heneygreenstein which is why the second example you provided works.
if(coffees<2,round(float),float)
- mlesin
- Member
- 176 posts
- Joined: 5月 2006
- Offline
- wolfwood
- Member
- 4271 posts
- Joined: 7月 2005
- Offline
If you want to do custom component labels you'll need to do the following-
cvex ggx_eval (
// required
vector u = 0;
vector v = 0;
int bounces = 0;
export vector eval = 0;
export vector refl = 0.5;
export float pdf = 0;
// args
int bouncemasklabels = 0;
vector ng = 0;
float alpha = 0.1;
) {
if (bounces & bouncemasklabels) {
….
}
}
surface blah(…, string label = “reflect”) {
f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, label,
“bouncemasklabels”, bouncemask(label),
“ng”, tnN,
“alpha”, alpha);
That way if you need to have extra component labels in addition to coat, diffuse, reflect etc your cvex shader will support it.
cvex ggx_eval (
// required
vector u = 0;
vector v = 0;
int bounces = 0;
export vector eval = 0;
export vector refl = 0.5;
export float pdf = 0;
// args
int bouncemasklabels = 0;
vector ng = 0;
float alpha = 0.1;
) {
if (bounces & bouncemasklabels) {
….
}
}
surface blah(…, string label = “reflect”) {
f = cvex_bsdf(
“ggx_eval”,
“ggx_sample”,
“label”, label,
“bouncemasklabels”, bouncemask(label),
“ng”, tnN,
“alpha”, alpha);
That way if you need to have extra component labels in addition to coat, diffuse, reflect etc your cvex shader will support it.
if(coffees<2,round(float),float)
-
- Quick Links