enginerenderer 0.0.1

A zero-dependency offline rendering engine in pure Rust — CPU path tracing, BVH acceleration, 16-band spectral rendering, PBR materials, animation & video export.
Documentation
use crate::core::debug::runtime::RuntimeAdaptationState;
use crate::core::scheduler::profiling::FrameSummary;

pub fn format_summary(summary: &FrameSummary) -> String {
    format!(
        "[frame {}] sim={}ms scene={}ms total={}ms pixels={} nodes={}",
        summary.frame_index,
        summary.simulation_ms,
        summary.scene_prep_ms,
        summary.total_frame_ms,
        summary.rendered_pixels,
        summary.scene_nodes,
    )
}

pub fn is_over_budget(summary: &FrameSummary, target_ms: f64) -> bool {
    summary.total_frame_ms as f64 > target_ms * 1.20
}

pub fn simulation_ratio(summary: &FrameSummary) -> f64 {
    if summary.total_frame_ms == 0 {
        return 0.0;
    }
    summary.simulation_ms as f64 / summary.total_frame_ms as f64
}

pub fn format_adaptation(state: &RuntimeAdaptationState) -> String {
    format!(
        "target={:.2}ms p50/p95/p99={:.2}/{:.2}/{:.2} jitter={:.2} q={:.2} spp={:.2} tile={:.2} sub={} res={}x{} scale={:.2} cd={} streak={}/{}",
        state.target_frame_ms,
        state.frame_p50_ms,
        state.frame_p95_ms,
        state.frame_p99_ms,
        state.jitter_ms,
        state.quality_bias,
        state.sample_pressure_scale,
        state.scheduler_granularity,
        state.substeps,
        state.internal_width,
        state.internal_height,
        state.internal_scale(),
        state.resize_cooldown_frames,
        state.over_budget_streak,
        state.under_budget_streak,
    )
}