float solid_angle(bsdf b, int mask)
b
サンプリングするBSDF。
mask
評価するバウンスタイプを示したビットマスク。
コンポーネントラベルビットマスクの詳細は、bouncemaskを参照してください。
Examples ¶
// 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); } // 立体角からPDFを計算します。 float pdf[] = compute_pdf(angles); // PDFからCDFを計算します。 float cdf[] = compute_cdf(pdf); // アルベド分布に基づいてBSDFをランダムに選択します。 int id = sample_cdf(cdf, sx); // 選択したBSDFを使って何かをします。 // lobes[id] ...
See also | |
bsdf |
|
pbr |
|
sampling |