RenderPlan

Qualified name: algan.rendering.raytracing.tracer.RenderPlan

class RenderPlan(backend, samples_per_pixel, requested_features, unsupported_features=(), truncations=TruncationCounts(surfaces_per_ray=0, shadow_lights=0, sheet_layers=0, dropped_continuations=0, closed_shell_ring=0, medium_stack=0, medium_query=0), path_samples_mean=0.0)[source]

Bases: object

Resolved renderer route and capability assessment for one batch.

The plan is attached to scene.last_render_plan and returned through algan.utils.algan_utils.RenderResult after a file render. It is intentionally data-only so applications can log or serialize it without depending on Taichi/Torch implementation objects.

Methods

as_dict

Attributes

is_supported

path_samples_mean

Samples per pixel the path tracer actually took, averaged over every path-traced cell of the render job.

truncations

How often each of the renderer's fixed ceilings bound, cumulative over the render job (see algan.rendering.raytracing.truncation).

unsupported_features

backend

samples_per_pixel

requested_features

Parameters:
  • backend (Literal['deterministic_wavefront', 'path_tracer'])

  • samples_per_pixel (int)

  • requested_features (tuple[str, ...])

  • unsupported_features (tuple[str, ...])

  • truncations (TruncationCounts)

  • path_samples_mean (float)

path_samples_mean: float = 0.0

Samples per pixel the path tracer actually took, averaged over every path-traced cell of the render job. With adaptive sampling on (pt_error_target > 0) samples_per_pixel is only the ceiling and this is the measurement: converged pixels – every unlit 2-D pixel – stop at pt_min_samples. Zero means the path tracer did not run, so it is 0.0 on every deterministic render.

truncations: TruncationCounts = TruncationCounts(surfaces_per_ray=0, shadow_lights=0, sheet_layers=0, dropped_continuations=0, closed_shell_ring=0, medium_stack=0, medium_query=0)

How often each of the renderer’s fixed ceilings bound, cumulative over the render job (see algan.rendering.raytracing.truncation). Zero everywhere means nothing was silently dropped – the counters are unconditional, so a zero is a measurement rather than a missing instrument. Only the plan of a finished batch carries counts; the one built during validation is necessarily empty.