Plan depth export through document renderer

This commit is contained in:
2026-06-05 21:03:27 +02:00
parent 3c36be4b43
commit 3be7171010
10 changed files with 443 additions and 14 deletions

View File

@@ -67,6 +67,7 @@ pp::foundation::Status write_export_binary_file(std::string_view path, std::span
class LegacyExportWriteServices final
: public pp::app::DocumentCubeFaceExportWriteServices
, public pp::app::DocumentDepthExportWriteServices
, public pp::app::DocumentExportCollectionWriteServices {
public:
explicit LegacyExportWriteServices(App& app) noexcept
@@ -519,6 +520,48 @@ public:
void export_depth(std::string_view document_name) override
{
auto* app = &app_;
#if !__WEB__
const auto target = pp::app::make_document_depth_export_target(app_.work_path, document_name);
if (target) {
LOG(
"export-depth document export target: image=%s depth=%s",
target.value().image_path.c_str(),
target.value().depth_path.c_str());
} else {
LOG("export-depth document export target planning failed: %s", target.status().message);
}
const auto prepared = prepare_legacy_document_export_snapshot(app_, "export-depth");
if (prepared) {
const auto plan = pp::paint_renderer::plan_document_depth_export_render(
pp::paint_renderer::DocumentDepthExportRenderPlanRequest {
.document = &prepared.value().snapshot.document,
.frame_index = prepared.value().snapshot.document.active_frame_index(),
});
if (plan) {
LOG(
"export-depth document export render plan: output=%ux%u mergedFaceDraws=%zu layerDepthDraws=%zu visitedLayers=%zu visibleLayers=%zu facePayloads=%zu requiresRendererReadback=%s",
plan.value().output_extent.width,
plan.value().output_extent.height,
plan.value().merged_face_draw_count,
plan.value().layer_depth_draw_count,
plan.value().visited_layer_count,
plan.value().visible_layer_count,
plan.value().face_payload_count,
plan.value().requires_renderer_readback ? "true" : "false");
} else {
LOG(
"export-depth document export render plan retained legacy export after failure: %s",
plan.status().message);
}
} else {
LOG(
"export-depth document export snapshot bridge retained legacy export after failure: %s",
prepared.status().message);
}
#else
prepare_legacy_document_export_snapshot_or_continue(app_, "export-depth");
#endif
app_.canvas->m_canvas->export_depth(std::string(document_name), [app] {
show_export_success_dialog(
*app,