solid_angle
float solid_angle(bsdf b, int mask)
b
要采样的BSDF。
mask
指示要评估哪些类型反弹的位掩码。
有关组件标签位掩码的信息,请参见bouncemask。
示例
// 将BSDF拆分为分量波瓣bsdf lobes[] = split_bsdf(hitF);
// 获取波瓣的立体角float angles[];resize(angles, len(lobes));for (int i = 0; i < len(lobes); i++){ angles[i] = solid_angle(lobes[i], PBR_ALL_MASK);}
// 根据立体角计算PDFfloat pdf[] = compute_pdf(angles);
// 根据PDF计算CDFfloat cdf[] = compute_cdf(pdf);
// 基于反照率分布随机选择一个BSDFint id = sample_cdf(cdf, sx);
// 对选中的BSDF进行操作// lobes[id] ...