fullseye

oren_nayar — OPTICS material op

使い方

粗い拡散面の陰影(Oren–Nayar)。紙・石膏・コンクリート・月の見え方。

normals: (H, W, 3)。light / view: 面から光源 / 視点への方向。 roughness_deg: 微小面の傾きの標準偏差 [deg]。0 で Lambert に厳密一致。 albedo: 拡散反射率(スカラまたは (H,W))。

返り値: (H, W) の放射輝度係数(0 以上)。

なぜ Lambert では足りないか: Lambert は端(терminator)で cos に比例して落ちるが、 粗い面は微小面の相互遮蔽と相互反射で端が平らに明るいままになる。満月が 円盤のように一様に見えるのがこれで、Lambert だと縁が暗くなって球に見えてしまう。

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(image2d を入力に取れる)

fraunhofer_pattern · pupil_psf · pupil_blur · psf_to_mtf · illumination_uniformity · render_through_lens · surface_defect · defocus_blur

同カテゴリ(material)

material_catalog · clearcoat_shade · sheen_shade · subsurface_approx · wetness


Provenance: surfacelib.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.