Renderer

class huira.swir8.Renderer
__init__(self: huira._huira.swir8.Renderer) → None
fft_planning(self: huira._huira.swir8.Renderer) → huira._huira.FftPlanEffort
fft_rounding_tolerance(self: huira._huira.swir8.Renderer) → float
noise_threshold(self: huira._huira.swir8.Renderer) → float

How noisy dynamic sampling leaves a pixel. See set_noise_threshold().

render(self: huira._huira.swir8.Renderer, scene_view: huira._huira.swir8.SceneView, frame_buffer: huira._huira.swir8.FrameBuffer) → None
set_dynamic_sampling(self: huira._huira.swir8.Renderer, dynamic_sampling: bool = True) → None

Turn dynamic sampling on or off (the default). On, each pixel is traced with as many of its samples as bring its noise under the noise threshold, and at least the minimum, judged with its neighbours’. See set_noise_threshold().

set_fft_planning(self: huira._huira.swir8.Renderer, effort: huira._huira.FftPlanEffort) → None

Set how hard FFTW plans the transforms that convolve bodies with the PSF. FftPlanEffort.Estimate, the default, plans at once. FftPlanEffort.Measure finds faster transforms, which convolve a 1920 x 1080 Visible8 frame in about 15% less time, but takes 2 to 5 seconds the first time a size and precision are used in a process: worth it for long sequences of frames. Bodies are convolved in single precision, unless the rounding error it would spread over the frame reaches a tenth of the read noise in a pixel; then in double.

set_fft_rounding_tolerance(self: huira._huira.swir8.Renderer, fraction_of_read_noise: float) → None

Set how much of the read noise (of an electron without read noise) the rounding of convolving bodies with the PSF in single precision may put in a pixel’s readout before they are convolved in double precision instead. Single precision spreads a faint pattern of rounding over the frame in proportion to its brightest pixel: at the default, 0.1, lost in any one frame’s read noise, but a square-root stretch of a noiseless frame to 30 electrons can show it. 0 always convolves in double precision.

set_indirect_clamp(self: huira._huira.swir8.Renderer, indirect_clamp: float) → None
set_max_bounces(self: huira._huira.swir8.Renderer, max_bounces: int) → None
set_min_samples(self: huira._huira.swir8.Renderer, min_samples: int) → None
set_noise_threshold(self: huira._huira.swir8.Renderer, threshold: float) → None

Set how noisy dynamic sampling leaves a pixel: the standard error of its mean radiance, relative to that mean (0.01, the default, is about 1%). Pixels are traced in rounds, the minimum number of samples and then twice as many each round, up to the samples per pixel, and a pixel samples on while it or any of its eight neighbours is noisier than this. 0 never stops early.

set_region_cull_margin_scale(self: huira._huira.swir8.Renderer, scale: float) → None
set_region_cull_validation(self: huira._huira.swir8.Renderer, enable: bool = True) → None
set_region_culling(self: huira._huira.swir8.Renderer, enable: bool = True) → None
set_samples_per_pixel(self: huira._huira.swir8.Renderer, spp: int) → None
set_unresolved_occlusion(self: huira._huira.swir8.Renderer, occlusion: bool = True) → None
set_unresolved_taper(self: huira._huira.swir8.Renderer, fraction_of_read_noise: float) → None

Set how far an unresolved source, still or moving, is drawn with its PSF and scattered light: until the light it puts in a pixel, as read out, falls to this fraction of the sensor’s read noise (of an electron without read noise). It then fades out smoothly by twice that distance, and the light left on the sensor is spread evenly over the frame. The default is 0.001; 0 draws every source over the whole frame, which takes as long as a frame per source.

unresolved_taper(self: huira._huira.swir8.Renderer) → float