mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 12:32:52 +00:00
21 lines
1.1 KiB
Rust
21 lines
1.1 KiB
Rust
//! Headless CPU rendering of PRC 3D models (ISO 14739-1) to an RGBA image.
|
|
//!
|
|
//! Layer L3: depends only on `pdfcraft-prc`. [`assemble`] turns a parsed [`pdfcraft_prc::PrcFile`]
|
|
//! into world-space meshes; [`render`] draws them from a [`Camera`] with one depth-tested sample per
|
|
//! pixel centre and a light at the camera; [`nav`] turns a viewer's input into that camera.
|
|
//! Single-threaded and GUI-free, so it runs unchanged on wasm32.
|
|
//! The image size is capped by [`MAX_RENDER_PIXELS`], the drawing work by [`MAX_RENDER_WORK`] and the
|
|
//! assembled model by [`MAX_ASSEMBLED_TRIANGLES`] and [`MAX_ASSEMBLED_VERTICES`]; bad input is an
|
|
//! error, never a panic.
|
|
#![forbid(unsafe_code)]
|
|
#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic, clippy::unimplemented, clippy::todo, clippy::unreachable)]
|
|
|
|
mod assemble;
|
|
pub mod nav;
|
|
mod raster;
|
|
mod render;
|
|
mod vec3;
|
|
|
|
pub use assemble::{MAX_ASSEMBLED_TRIANGLES, MAX_ASSEMBLED_VERTICES, WorldMesh, assemble, place};
|
|
pub use render::{Bounds, Camera, Image, Lighting, MAX_RENDER_PIXELS, MAX_RENDER_WORK, Projection, RenderError, RenderOptions, render};
|