fullseye

solid_angle_render — OPTICS illumination op

使い方

Image of a normal map under a cone light through a lens of NA view_na (image2d).

normals: (H, W, 3) surface normals in camera coordinates (+z toward the camera; zero-length = background, rendered 0) — e.g. from a height map’s gradient, metalfinish.micro_normals (hairline / turning marks) or metalfinish.blast_normals (satin). light: :func:solid_angle_light. Every pixel is viewed along +z with the same object-side cone (a telecentric camera) and lit by the same cone (the far-field light), so the image is a function of the local normal only:

B = F · share_of_pupil_lit + ρ · sin²α · cos γ

The specular share uses n_samples rays over the narrower cone (the pupil, uniform in direction cosines, or the source cap; the same quadrature for every pixel, so there is no pixel noise), each mirrored by the normal tilted by a micro-facet slope drawn once per ray (roughness_deg σ, a scalar or an (H, W) map for satin patches); F = f0 (Fresnel at near-normal incidence, a constant over the small angles involved); the diffuse body term with albedo diffuse_albedo uses the closed form of the projected solid angle of a uniform cap π sin²α cos γ (γ = angle between the normal and the cone axis; exact while the cap stays above the facet’s horizon) divided by π. Values are relative to the source radiance (1 = mirror, full pupil, F = 1). With few samples a partial overlap is quantised to 1/n_samples.

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

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

詳しい使い方ガイド

背景知識ガイド(この op の手前にある物理・規約)

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

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

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

fraunhofer_pattern · pupil_psf · pupil_blur · psf_to_mtf · edge_spread · veiling_glare_index · emva_pair_statistics · emva_defect_pixels

同カテゴリ(illumination)

light_source · irradiance_map · illumination_uniformity · defect_contrast · lighting_sweep · illumination_design · solid_angle_light · solid_angle_boundaries


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

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