Skip to content

Ship deterministic atrinik-render and a golden-image runner #9

Description

@zoeyrose

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions