Files
MetaCrate/crates/libremetaverse-rendering-simple
Chili Palmer dceb394378
Some checks failed
API and SemVer surface / api-surface (push) Failing after 1m28s
Native release artifact audit / audit (push) Failing after 1h6m34s
Native code generation / deterministic (push) Failing after 2m15s
Concurrency and resource soak audit / soak (push) Failing after 6m33s
Documentation / documentation (push) Failing after 2m0s
Imaging and meshing gate / native (push) Failing after 55s
JPEG 2000 feature / linux (push) Successful in 2m46s
performance evidence / audit (push) Failing after 13m45s
Release platform and feature matrix / audit (push) Successful in 1m3s
Native Rust workspace compile / compile (push) Failing after 55s
Skia feature / linux (push) Successful in 31m58s
Dependency and supply-chain audit / audit (push) Failing after 9m34s
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Failing after 10m2s
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Failing after 2m0s
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Failing after 1m56s
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Failing after 6m19s
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Failing after 6m57s
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Failing after 7m6s
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Failing after 8m8s
Prove clean native release artifacts (#106)
2026-08-12 04:57:37 +00:00
..

LibreMetaverse simple renderer

libremetaverse-rendering-simple is the small, deterministic reference pipeline for geometry that is already represented by a Primitive or a decoded sculpt map. It has no windowing, GPU, Skia, voice, RLV, or LSL dependency. The only geometry backend is the workspace's checked native libremetaverse-prim-mesher crate.

Supported inputs and output

SimpleRenderer implements both its concrete C#-mapped methods and the shared IRendering trait. It supports:

  • linear and flexible paths, plus circular prim paths;
  • square, circular, half-circle, and all three triangular profiles;
  • profile/path cuts, hollow profiles, shear, taper, twist, skew, radius offset, and revolutions at all four DetailLevel values;
  • plane, cylinder, sphere, and torus sculpt maps supplied as ManagedImage;
  • faceted output grouped by prim face, and flattened simple output that keeps each face's independent vertex/normal/UV domain;
  • per-face texture-entry inheritance, including texture, legacy material, and render-material UUIDs; and
  • default and planar texture transforms with repeat, offset, rotation, and primitive scale.

Positions are emitted in prim-local coordinates. Every face contains finite positions, normals, and UVs, in-range triangle indices, its local bounds and center, and its effective texture-entry face. Identical inputs produce byte-for-byte-identical floating-point and index sequences; the compatibility suite pins a golden high-detail box.

Bounds and errors

Each face and flattened mesh is limited to the 16-bit index domain (65,536 vertices), and aggregate vertex/index growth uses checked arithmetic before allocation or conversion. Non-finite construction data, malformed mesher domains, invalid indices, unsupported topology, and budget overflow return Error::Rendering. That error includes the source primitive UUID and a static operation context so callers can identify the object that failed. Invalid standalone texture-transform arguments return Error::Argument because that API has no primitive parameter from which to derive source context.

Deliberate boundary

A sculpt whose type is Mesh names an encoded mesh asset rather than a sculpt height map. SimpleRenderer does not fetch or decode assets, so that input returns a typed mesh sculpt requires a decoded mesh asset error. Mesh-asset decoding, skin weights, secondary UVs, and rigged-mesh metadata belong to the separate MeshFoundry renderer. The simple renderer also performs no world transform, scene traversal, material shading, texture download, or drawing.

Run the focused implementation gates with:

python3 tools/check_milestone_10_issue_76.py
CARGO_BUILD_JOBS=1 cargo test -p libremetaverse-compat-tests --test rendering_shims --locked -j1
CARGO_BUILD_JOBS=1 cargo test -p libremetaverse-rendering-simple --locked -j1