reflectance op• 데이터 종류: normalmap → image2d
• 호출: import specularity; specularity.brdf_blinn_phong(normals, light=(0.0, 0.0, 1.0), view=(0.0, 0.0, 1.0), shininess=32.0)(또는 opsspecular.get("brdf_blinn_phong"))
Blinn 의 하프벡터 정반사 로브. → [0, 1] 의 (H, W).
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
`max(n.h, 0) ** shininess where h` is the unit bisector of the light
and view directions (Blinn 1977), zeroed wherever the surface faces away
from either. Exactly 1 where the normal *is* the half-vector — the mirror
condition — and it falls monotonically from there.
Unnormalised on purpose. The classical Blinn-Phong lobe does not
integrate to a fixed value; its peak is 1 and its energy grows as the
exponent shrinks. It is a shading model, useful because its peak location is
exact and because it is a *different* lobe shape from
:func:brdf_microfacet — a separation routine that only works on one of the
two is fitting the lobe, not the model. For an energy-consistent lobe use
:func:brdf_microfacet.
Reciprocal in light and view to machine precision (measured exactly 0.0
maximum difference in `tests/test_specularity.py`), because the
half-vector is symmetric and the visibility test covers both sides.
Raises `ValueError: *normals* is not an (H, W, 3)` field or
contains a zero-length normal; *light* / *view* are not non-zero 3-vectors;
*shininess* is negative, non-finite, a string or a bool; light and view are
exactly opposite.
• specular_photometric 패밀리 가이드
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• specular_photometric — py -3.11 examples/specular_photometric.py
image2d 를 입력으로 받는 것)reflectance)brdf_microfacet · dichromatic_render
*Provenance: specularity.py — SPECULAR 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.