bsdf diffuse(...)
bsdf diffuse(vector nml, ...)
bsdf diffuse(vector nml, vector geo_normal, ...)
vector diffuse(vector nml, ...)
Diffuse reflections. This BSDF has an albedo of 0.5. If your shader or
geometry has smooth normals (N and Ng differ) you should avoid the
signature diffuse(vector nml)
since it assumes that the
shading normal matches the geometric normal.
See writing a PBR shader for information on BSDFs.
bsdf diffuse(float roughness, ...)
bsdf diffuse(vector nml, float roughness, ...)
bsdf diffuse(vector nml, float roughness, int energycompensated, ...)
bsdf diffuse(vector nml, vector geo_normal, float roughness, ...)
bsdf diffuse(vector nml, vector geo_normal, float roughness, int energycompensated, ...)
vector diffuse(vector nml, vector V, float roughness, ...)
This form uses the
Oren-Nayar lighting model to compute the diffuse illumination for the
surface. The Oren-Nayar lighting model is a more sophisticated lighting
model than Lambertian lighting. The V vector represents a vector from
the surface to the eye (i.e. -normalize(I)). With a roughness of 0, the
Oren-Nayar lighting model is equivalent to the Lambertian model. As
roughness increases toward 1, the illumination changes to mimic rougher
materials (like clay). The Oren-Nayar form of diffuse() is more
expensive than Lambertian diffuse lighting.
To prevent loss of energy due to large roughness
values,
energycompensated
can be set to 1.
Light inclusion/exclusion options ¶
"categories
",
string
="*"
Specifies lights to include/exclude by their “category” tags.
This is the preferred include/exclude lights rather than pattern matching
light names with the "lightmask"
keyword argument.
For example:
diff = diffuse(nml, "lightmask", "hero | fill");
See light categories for more information.
"lightmask
",
string
="*"
When evaluating light and shadow shaders, objects have pre-defined light masks. This mask is usually specified in the geometry object and specifies a list of lights which are used to illuminate a surface or fog shader. It is possible to override the default light mask by specifying a “lightmask” argument.
For example:
diff = diffuse(nml, "lightmask", "light*,^light2");
…will cause all lights whose names begin with “light” except for a light named “light2” to be considered for diffuse illumination.
All Houdini scoping patterns, excepting group expansion, are supported:
-
*
- wild-card match -
?
- single character match -
^
- exclusion operator -
[list]
- character list match
See also | |
bsdf |
|
pbr |
|
shading |
|