AcademySoftwareFoundation / AcademySoftwareFoundation/OpenPBR
Dual lobe phase function for SSS
- Dominant language
- CSS
- Stars
- 793
- Forks
- 44
- PR merge metrics
- No merged PRs in 30d
Description
In the Arnold [volume shader ](https://help.autodesk.com/view/ARNOL/ENU/?guid=arnold_core_ac_standard_volume_html)we use the popular "dual HG lobe" parametrization that allows the phase function to be a mixture of forward and back-scattering.
Plotting the phase function as a polar plot below, the blue cases on the diagonal are the current model, the green off-diagonal ones are the new lobe shapes made possible in the dual lobe model:

For the SSS (and transmission volume) in OpenPBR Surface, this could potentially be quite useful for artists (or even essential to achieve certain looks).
cf. Andrea Weidlich on [Slack](https://academysoftwarefdn.slack.com/archives/C06365EAQMP/p1708463836398739?thread_ts=1706661003.294749&cid=C06365EAQMP):
>I'm curious, have you ever tried lookdeving a character with this? Normally I would have two phase functions, one -0.3, one 0.7 to 0.8 mixed together which gives you a Mie-style behaviour. How would you do this? .. I couldn't live without.
It amounts to adding a blend weight and a secondary anisotropy, and would be an additive change to the SSS functionality. The implementation is very simple and amounts to a small change to the phase function evaluation and sampling logic.
Contributor guide
No contributing guide indexed for this repository
Research direction
No implementation files or tests are named. Start with the Arnold volume shader documentation linked in the issue, then locate the OpenPBR reference implementation's SSS and transmission-volume phase-function evaluation and sampling entry points. Done means the dual-lobe behavior, including blend weight and secondary anisotropy, is supported consistently in both paths.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100