sheenLobe
The soft glow of light scattered off fibres where a surface turns edge-on to the viewer: the velvet sheen on the flanks of satin, velour and wool.
sheenLobe(opts: {
normal: Expr
light: Expr
view: Expr
roughness: Expr | number
gain?: Expr | number
}): Expr
Import materials from shaders/std and use materials.sheenLobe.
normal and light are unit 3D vectors and view the view ray (viewRay, or a constant vec3(0, 0, 1)). It is zero on a face-on surface and rises along each fold's flank, so it never washes a flat sheet. roughness (0–1) widens it: low is a thin bright rim, high a broad soft bloom. The lobe peaks at 1 and is held back by a wrapped lambert so unlit flanks stay dark; pass gain or scale the result yourself. Pair it with anisoSpecular for a satin finish: the streak is the shine, the sheen is the body.
Parameters
| Name | Type | Notes |
|---|---|---|
opts | `{ |
normal: Expr
light: Expr
view: Expr
roughness: Expr \| number
gain?: Expr \| number
}` | |
Example
const velvet = sheenLobe({normal: n, light: L, view, roughness: 0.5, gain: u.sheen})
See also
anisoSpecular— A highlight stretched along a grain, as on brushed metal or carbon fibre.lambert— How much a light falls on a surface: 0 facing away, 1 facing it.grazingOf— How edge-on the surface is to the viewer: 0 face-on, 1 grazing.