post oprgb → rgbimport fullseye as fs; fs.ledger.vignette(rgb, strength=0.6, radius=1.0, power=2.0) (実装を直接呼ぶなら import gfx2d; gfx2d.vignette(rgb, strength=0.6, radius=1.0, power=2.0)、台帳から引くなら opsgfx2d.get("vignette"))Darken towards the corners: out = rgb * (1 - strength * t**power).
t is the distance from the geometric centre ((h-1)/2, (w-1)/2)
divided by radius times the half-diagonal, clipped at 1. The factor at
t = 0 is exactly 1, so strength=0 is the exact identity and — for an
odd-sized image, where a pixel actually sits on the centre — that pixel
is returned untouched. An even-sized image has no centre pixel: its four
innermost pixels are 0.707 px out and are already attenuated, which is
geometry rather than a rounding error.
py -3.11 examples/gfx2d_scene.pypy -3.11 examples/poc_search_sweep_width.pypy -3.11 examples/poc_solar_el_inspection.pyrgb を入力に取れる)srgb_to_linear · linear_to_srgb · blend_mode · light_mask · normal_map_decode · bloom · chromatic_aberration · film_grain
post)bloom · chromatic_aberration · film_grain · color_lut · color_grade · dither · palette_quantize
Provenance: gfx2d.py — GFX2D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.