Rendering: implement SimpleRenderer as the reference pipeline #76

Closed
opened 2026-08-08 08:23:15 +00:00 by hugo · 1 comment
Owner

Objective

Implement SimpleRenderer against the finalized core rendering contract as a clear reference path.

Deliverables

  • Cover primitive/mesh conversion, transforms, face/material/texture mapping, normals/UVs, sculpt handling, and documented unsupported cases.
  • Keep the implementation small and deterministic without MeshFoundry-only dependencies.
  • Return typed errors with source object context.

Validation

  • All SimpleRenderer and shared rendering tests pass.
  • Golden output is deterministic.
  • The crate builds without Skia, voice, RLV, or LSL dependencies.

Prerequisite

All global API/test gates and the foundational/world implementations needed by these extension crates are complete.

Project constraints

  • Full native Rust implementation only; no wrapped C# parser, viewer, renderer, or service.
  • Preserve mapped APIs and exact translated tests; reuse lower layers and keep generated output deterministic.
  • Validate bounded input, callbacks/tasks, docs, coverage, and workspace gates.
## Objective Implement SimpleRenderer against the finalized core rendering contract as a clear reference path. ## Deliverables - Cover primitive/mesh conversion, transforms, face/material/texture mapping, normals/UVs, sculpt handling, and documented unsupported cases. - Keep the implementation small and deterministic without MeshFoundry-only dependencies. - Return typed errors with source object context. ## Validation - All SimpleRenderer and shared rendering tests pass. - Golden output is deterministic. - The crate builds without Skia, voice, RLV, or LSL dependencies. ## Prerequisite All global API/test gates and the foundational/world implementations needed by these extension crates are complete. ## Project constraints - Full native Rust implementation only; no wrapped C# parser, viewer, renderer, or service. - Preserve mapped APIs and exact translated tests; reuse lower layers and keep generated output deterministic. - Validate bounded input, callbacks/tasks, docs, coverage, and workspace gates.
hugo added this to the 10 - Rendering, RLV, and LSL tools milestone 2026-08-08 08:23:15 +00:00
hugo added the enhancement label 2026-08-08 08:23:15 +00:00
Author
Owner

Implemented and pushed in commit 611db56.

The native SimpleRenderer now converts checked PrimMesher prim and sculpt geometry into faceted and flattened meshes, preserves effective per-face texture/material/render-material metadata, emits finite normals and UVs, calculates face bounds, implements default and planar texture transforms, and implements the shared IRendering trait. Geometry growth and 16-bit indices are bounded with checked arithmetic; rendering failures carry the source primitive UUID and operation context. Mesh-asset sculpts are explicitly rejected at the documented SimpleRenderer/MeshFoundry boundary.

Focused verification completed:

  • 8/8 pre-created rendering_shims compatibility cases pass, including the deterministic golden mesh
  • 2/2 SimpleRenderer reference-pipeline tests pass across 6 profiles, 3 path families, 4 LODs, and all 4 sculpt topologies
  • strict Clippy passes for the crate/all targets and focused compatibility target
  • rustdoc passes with warnings denied
  • generate_api_shims.py --check and generate_rust_mapping.py --check pass
  • issue 76 ownership/dependency audit passes
  • cargo check --workspace --all-targets --locked -j1 passes
  • normal dependency tree contains no Skia, voice, RLV, or LSL crate
Implemented and pushed in commit 611db56. The native SimpleRenderer now converts checked PrimMesher prim and sculpt geometry into faceted and flattened meshes, preserves effective per-face texture/material/render-material metadata, emits finite normals and UVs, calculates face bounds, implements default and planar texture transforms, and implements the shared IRendering trait. Geometry growth and 16-bit indices are bounded with checked arithmetic; rendering failures carry the source primitive UUID and operation context. Mesh-asset sculpts are explicitly rejected at the documented SimpleRenderer/MeshFoundry boundary. Focused verification completed: - 8/8 pre-created rendering_shims compatibility cases pass, including the deterministic golden mesh - 2/2 SimpleRenderer reference-pipeline tests pass across 6 profiles, 3 path families, 4 LODs, and all 4 sculpt topologies - strict Clippy passes for the crate/all targets and focused compatibility target - rustdoc passes with warnings denied - generate_api_shims.py --check and generate_rust_mapping.py --check pass - issue 76 ownership/dependency audit passes - cargo check --workspace --all-targets --locked -j1 passes - normal dependency tree contains no Skia, voice, RLV, or LSL crate
hugo closed this issue 2026-08-10 21:51:38 +00:00
Sign in to join this conversation.