Export layer collections through paint renderer

This commit is contained in:
2026-06-05 20:48:16 +02:00
parent 77268a28fb
commit 3c36be4b43
10 changed files with 815 additions and 21 deletions

View File

@@ -258,7 +258,9 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
pure six-face PNG export bytes encoded through `pp_assets`. The compositor
tests now also cover equirectangular PNG export from that same composited
document frame using the shader-equivalent cube sampling policy and
`pp_assets` PNG encoding.
`pp_assets` PNG encoding, independent layer equirectangular PNG export for
layer collections, and merged animation-frame equirectangular PNG export for
frame collections.
- `pano_cli simulate-document-export` exposes the same pure document-to-PPI
export, asset-level decode, and document reimport path through JSON
automation and is covered by `pano_cli_simulate_document_export_smoke`.
@@ -289,7 +291,10 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
falls back to `Canvas::export_cube_faces` if snapshot capture, PNG generation,
or file writing fails. PNG equirectangular export writes a pure
document/paint-renderer equirectangular PNG before falling back to the
retained writer; JPEG/XMP equirectangular export, layer, animation-frame,
retained writer. Payload-complete layer and animation-frame PNG collections
write pure document/paint-renderer equirectangular PNG sequences through the
app-core collection write/publish executor before retained fallback; JPEG/XMP
equirectangular export, Web handoff, incomplete-readback collection cases,
depth, and video export remain on retained writer paths.
- `pano_cli save-document-project` writes that pure document export to a PPI
file and is covered by `pano_cli_save_document_project_roundtrip_smoke`,
@@ -1134,8 +1139,11 @@ powershell -ExecutionPolicy Bypass -File scripts\automation\apple-remote-build.p
app-core planned legacy work-directory face paths through the app-core
write/publish executor before falling back to the retained writer, PNG
equirectangular export writes the pure document/paint-renderer
equirectangular PNG before retained fallback, and JPEG/XMP, collection, and
depth exports remain on older retained paths. It
equirectangular PNG before retained fallback, payload-complete layer and
animation-frame collections write pure document/paint-renderer PNG sequences
through the app-core collection write/publish executor, and JPEG/XMP,
Web/incomplete-readback collection cases, and depth exports remain on older
retained paths. It
also bridges timelapse and animation MP4 export picker-selected paths while
preserving desktop worker-thread timelapse behavior, mobile/Web save
callbacks, `App::rec_export`, animation `Canvas::export_anim_mp4`, and

View File

@@ -24,8 +24,8 @@ and validation command.
| Capability | Current Area | Target Owner | Required Tests |
| --- | --- | --- | --- |
| PNG/JPEG import | `Image`, `Canvas` import paths | `pp_assets`, `pp_document` | Fixture import, malformed file |
| PNG/JPEG export | `Canvas`, `Image`, export dialogs | `pp_assets`, `pp_paint_renderer`, `pp_app_core` | Golden output tolerance, export start/target planning tests, live export-adapter document snapshot readiness through the shared paint-renderer export report, pure cube-face PNG writer, pure equirectangular PNG writer, JPEG/XMP parity still retained |
| Equirectangular import/export | `Canvas`, shaders, RTT, export dialogs | `pp_paint_renderer`, `pp_app_core` | Tiny cube/equirect golden, app-core file target tests, live export-adapter renderer-upload/face-PNG readiness report, pure document-frame equirectangular PNG export and live PNG writer fallback, JPEG/XMP retained until metadata parity is owned |
| PNG/JPEG export | `Canvas`, `Image`, export dialogs | `pp_assets`, `pp_paint_renderer`, `pp_app_core` | Golden output tolerance, export start/target planning tests, live export-adapter document snapshot readiness through the shared paint-renderer export report, pure cube-face PNG writer, pure equirectangular PNG writer, pure layer/frame collection PNG writers, app-core collection write executor, JPEG/XMP parity still retained |
| Equirectangular import/export | `Canvas`, shaders, RTT, export dialogs | `pp_paint_renderer`, `pp_app_core` | Tiny cube/equirect golden, app-core file target tests, live export-adapter renderer-upload/face-PNG readiness report, pure document-frame equirectangular PNG export and live PNG writer fallback, pure layer/frame equirectangular PNG collection export, JPEG/XMP retained until metadata parity is owned |
| Cube face export | `Canvas` fallback | `pp_paint_renderer`, `pp_app_core` | Pure six-face document frame composite, renderer texture-upload bridge, shared export-readiness report, app-core face filename planning and write/publish service execution, payload-complete canvas-snapshot renderer-upload and face-PNG automation, live document/renderer face-PNG writer with retained Canvas fallback, OpenGL command-plan coverage, six-face golden set |
| Depth export | `Canvas`, grid tools | `pp_paint_renderer` | Float/readback validation |

File diff suppressed because one or more lines are too long

View File

@@ -692,9 +692,12 @@ executor using the app-core-planned legacy face filenames when available and
falls back to retained `Canvas::export_cube_faces` on snapshot/write failure.
PNG equirectangular export now uses the same document/composite payload to
generate an equirectangular PNG through `pp_paint_renderer` before the retained
fallback. JPEG/XMP equirectangular export, layer collections, animation-frame
collections, depth, and video still delegate to retained `Canvas` writers after
readiness reporting.
fallback. Payload-complete layer and animation-frame PNG collections now use
pure `pp_paint_renderer` equirectangular PNG generation plus app-core
collection write/publish execution before retained fallback. JPEG/XMP
equirectangular export, Web handoff, depth, video, and incomplete-readback
collection cases still delegate to retained `Canvas` writers after readiness
reporting.
`pano_cli plan-image-import` exposes app-core planning for File > Import image
route decisions, including wide equirectangular images, legacy vertical cube
strips, regular transform-placement images, and invalid image dimensions; live
@@ -2536,10 +2539,13 @@ Results:
write/publish service executor before falling back to retained `Canvas`
execution on failure. PNG equirectangular export now writes a
`pp_paint_renderer` equirectangular PNG from the same composited document
frame before falling back to retained `Canvas` execution; JPEG/XMP,
layer, animation-frame, depth, and video export remain on their prior
retained writer paths. Actual broader writer replacement remains tracked
under export debt.
frame before falling back to retained `Canvas` execution; payload-complete
layer and animation-frame PNG collections now write pure
`pp_paint_renderer` equirectangular PNG sequences through a tested app-core
collection write/publish executor before retained fallback. JPEG/XMP,
Web prepared-file handoff, depth, video, and incomplete-readback collection
cases remain on their prior retained writer paths. Actual broader writer
replacement remains tracked under export debt.
- Snapshot creation now rejects invalid embedded RGBA8 face payloads before
document export or history can persist malformed state.
- Package-smoke wrappers validate the Windows CMake app executable/runtime