Outcome
Publish a source-neutral offscreen renderer used by CI, world imagery, client/editor tests, and reproducible diagnostics.
Scope and invariants
- Accept a versioned renderer-owned scene bundle, explicit resource manifest/provider root, viewport, orthogonal product and lighting profiles, clock/frame, backend preference, and output directory.
- Keep
product_profile (for example region/player-view) separate from lighting_profile (fully-lit or intended-darkness). The authoritative source supplies the resolved immutable light field and environment identity; the CLI never infers indoor/outdoor state or time of day.
- Perform no network access, user-config discovery, or mutable source-tree lookup; all inputs are explicit and digest-verified.
- Write RGBA images plus optional identity/depth/coverage/visibility masks and a manifest containing versions, inputs, backend, limits, timings, and hashes.
- Use atomic outputs and never leave a successful-looking partial product.
- Provide comparison tooling with exact semantic masks, configurable color tolerances, artifact diff images, and actionable failures.
Acceptance criteria
- Repeated same-backend runs are stable; Vulkan/D3D12 variance is documented by fixture rather than globally ignored.
- Malformed bundles/resources, missing GPU/backend, timeout/cancellation, write failure, and insufficient limits fail atomically.
- Client/editor integration tests invoke the same library path; no second offscreen renderer exists.
- CLI schemas/help/versioning are stable and wrapper/CI consumable, with lighting mode/profile/light-field digests in output and cache identities.
- A representative world and UI fixture run headlessly or with documented software-adapter prerequisites.
fully-lit and intended-darkness use explicit authoritative sample fields through the normal renderer path; neither is a post-render brightness operation or silent alternate shader.
Dependencies and parallelization
Depends on #5-#8. World imagery generation and server scene export can integrate once the input bundle freezes. Paired atlas products are owned by #21, chunk/seam behavior by #22, and the shared lighting/material path by #14.
Licensing
Rendering code, shaders, tests, and newly authored fixtures are MIT. Reuse from atrinik/classic sources is allowed only through the audited approved-grantor grant; all other behavior is independently implemented. Bundled assets require exact compatible licenses and notices.
Outcome
Publish a source-neutral offscreen renderer used by CI, world imagery, client/editor tests, and reproducible diagnostics.
Scope and invariants
product_profile(for example region/player-view) separate fromlighting_profile(fully-litorintended-darkness). The authoritative source supplies the resolved immutable light field and environment identity; the CLI never infers indoor/outdoor state or time of day.Acceptance criteria
fully-litandintended-darknessuse explicit authoritative sample fields through the normal renderer path; neither is a post-render brightness operation or silent alternate shader.Dependencies and parallelization
Depends on #5-#8. World imagery generation and server scene export can integrate once the input bundle freezes. Paired atlas products are owned by #21, chunk/seam behavior by #22, and the shared lighting/material path by #14.
Licensing
Rendering code, shaders, tests, and newly authored fixtures are MIT. Reuse from
atrinik/classicsources is allowed only through the audited approved-grantor grant; all other behavior is independently implemented. Bundled assets require exact compatible licenses and notices.