Skip to main content

nexcore_softrender/
lib.rs

1//! nexcore-softrender: Pure-Rust software rasterizer
2//!
3//! First-principles rendering from math to pixels. Zero dependencies.
4//!
5//! # Pipeline
6//! ```text
7//! Geometry (vertices) → Transform (matrices) → Rasterize (edge functions) → Framebuffer (pixels)
8//! ```
9//!
10//! # Architecture
11//! - `math` — Vec2/3/4, Mat3/4, transforms, color (pure computation)
12//! - `geometry` — Vertex, Triangle, Mesh, shape generators
13//! - `pipeline` — Viewport, rasterizer (edge functions), fragment shading, framebuffer
14
15#![forbid(unsafe_code)]
16#![warn(missing_docs)]
17#![cfg_attr(
18    not(test),
19    deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)
20)]
21#![allow(
22    clippy::as_conversions,
23    clippy::arithmetic_side_effects,
24    clippy::indexing_slicing,
25    reason = "Software rendering requires frequent pixel/math conversions and low-level indexing for performance"
26)]
27#![allow(
28    clippy::too_many_arguments,
29    clippy::many_single_char_names,
30    reason = "Rendering pipelines and math functions often have many parameters (x, y, z, w, r, g, b, a)"
31)]
32
33pub mod geometry;
34pub mod math;
35pub mod pipeline;
36
37// Top-level re-exports for ergonomic use
38pub use geometry::{Mesh, Triangle, Vertex};
39pub use math::{Color, Mat3, Mat4, Vec2, Vec3, Vec4};
40pub use pipeline::{Framebuffer, Viewport};