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 std::error::Error;

use crate::api::scenes::SceneDescriptor;
use crate::api::types::core::{RenderRequest, RenderResult};

use super::engine_api::EngineApi;

impl EngineApi {
    /// Renders a scene descriptor through the standard engine pipeline.
    pub fn render_descriptor(
        &self,
        descriptor: SceneDescriptor,
        request: &RenderRequest,
    ) -> Result<RenderResult, Box<dyn Error>> {
        let builder = descriptor.into_builder();
        self.render(builder, request)
    }

    /// Loads a descriptor from disk and renders it.
    pub fn load_and_render<P: AsRef<std::path::Path>>(
        &self,
        scene_path: P,
        request: &RenderRequest,
    ) -> Result<RenderResult, Box<dyn Error>> {
        let descriptor = SceneDescriptor::load_from_file(scene_path)?;
        self.render_descriptor(descriptor, request)
    }
}