motionloom 0.1.0

MotionLoom DSL parser and renderer for video effects, scene graphs, motion graphics, and world graphs.
Documentation
use motionloom::api::{GpuCompatibilitySeverity, inspect_gpu_compatibility};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let script = r##"
<Graph fps={30} duration="1s" size={[640,360]}>
  <Background color="#101827" />
  <Scene id="compat_scene">
    <Timeline>
      <Track id="main" space="world" z="0">
        <Sequence from="0s" duration="1s" out="hold">
          <Layer>
            <Circle x="320" y="180" radius="96" color="#4CC9F0" />
          </Layer>
        </Sequence>
      </Track>
    </Timeline>
  </Scene>
  <Present from="compat_scene" />
</Graph>
"##;

    let report = inspect_gpu_compatibility(script)?;
    println!("likely CPU fallback: {}", report.likely_cpu_fallback);
    println!("preview path: {:?}", report.likely_preview_path);

    for issue in &report.issues {
        let level = match issue.severity {
            GpuCompatibilitySeverity::Blocking => "blocking",
            GpuCompatibilitySeverity::Warning => "warning",
            GpuCompatibilitySeverity::Info => "info",
        };
        println!(
            "[{level}] {:?} {}: {}",
            issue.target, issue.code, issue.message
        );
    }

    Ok(())
}